error linq query Contains string

Discussion of open issues, suggestions and bugs regarding ADO.NET provider for PostgreSQL
Post Reply
ratm
Posts: 13
Joined: Thu 14 Feb 2019 11:36

error linq query Contains string

Post by ratm » Thu 14 Feb 2019 13:42

Hi, my problem is born when I go to make a semolina query where I have to return a list containing a string. The quety is as follows
(from s in context. Action
              where s.Nome.Contains (query)
              orderby s.Name
              select string.Format ("{0} | {1}", new JavaScriptSerializer (). Serialize (s), s.Name)). Distinct (). Take (limit);
Can someone help me?

Shalex
Site Admin
Posts: 9543
Joined: Thu 14 Aug 2008 12:44

Re: error linq query Contains string

Post by Shalex » Tue 19 Feb 2019 12:02

Try this code:

Code: Select all

var query = (from s in context. Action
              where s.Nome.Contains (query)
              orderby s.Name
              select s). Distinct (). Take (limit).ToList();

var result = query.Select(s => string.Format ("{0} | {1}", new JavaScriptSerializer (). Serialize (s), s.Name)));
If this doesn't help, specify:
1) your ORM framework (EF Core, etc)
2) the exact text of the error with its full stack trace

ratm
Posts: 13
Joined: Thu 14 Feb 2019 11:36

Re: error linq query Contains string

Post by ratm » Tue 19 Feb 2019 22:02

ERROR:
statusCode: 500

statusText: Internal Server Error

responseData: {"Message":"Only arguments that can be evaluated on the client are supported for the String.StartsWith method.","StackTrace":" in Devart.Data.PostgreSql.Linq.Engine.PgSqlMethodCallConverter.\u003c\u003ec__DisplayClass36.a(SqlFactory A_0, IList`1 A_1, Type A_2)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.a(List`1 A_0, List`1 A_1, List`1 A_2, Type A_3, Object A_4)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.b(c4 A_0)\r\n in Devart.Data.Linq.Engine.SqlVisitor.g(SqlExpression A_0)\r\n in Devart.Data.Linq.Engine.SqlVisitor.h(SqlSelect A_0)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.e(SqlSelect A_0)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.a(h A_0)\r\n in Devart.Data.Linq.Engine.SqlVisitor.h(SqlSelect A_0)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.e(SqlSelect A_0)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.a(h A_0)\r\n in Devart.Data.Linq.Engine.SqlVisitor.b(SqlJoin A_0)\r\n in Devart.Data.Linq.Engine.SqlVisitor.b(SqlJoin A_0)\r\n in Devart.Data.Linq.Engine.SqlVisitor.b(SqlJoin A_0)\r\n in Devart.Data.Linq.Engine.SqlVisitor.h(SqlSelect A_0)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.e(SqlSelect A_0)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.a(h A_0)\r\n in Devart.Data.Linq.Engine.SqlVisitor.h(SqlSelect A_0)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.e(SqlSelect A_0)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.a(h A_0)\r\n in Devart.Data.Linq.Engine.SqlVisitor.h(SqlSelect A_0)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.e(SqlSelect A_0)\r\n in Devart.Data.Linq.Engine.DbMethodCallConverter.a(h A_0)\r\n in Devart.Data.Linq.Engine.cy.a(SqlNode A_0, ResultShape\u0026 A_1)\r\n in Devart.Data.Linq.Engine.cy.d(Expression A_0)\r\n in Devart.Data.Linq.Engine.cy.f(Expression A_0)\r\n in Devart.Data.Linq.CompiledQuery.a(IProvider A_0)\r\n in Devart.Data.Linq.CompiledQuery.a(DataContext A_0, Object[] A_1)\r\n in Devart.Data.Linq.CompiledQuery.Invoke[a,b,c,d](a A_0, b A_1, c A_2)\r\n in ICACODE.Web.Services.AutocompleteHandler.GetAutocompleteResults(Func`4 cq, String query, Int32 limit) in C:\\Users\\Matteo\\Documents\\Visual Studio 2017\\Projects\\Crediti08\\IcaCode_TEST\\ICACODE\\ICACODE.Web\\Services\\AutocompleteHandler.asmx.cs:riga 41\r\n in ICACODE.Web.Services.AutocompleteHandler.ProcessRequest(String scope, String query, Int32 limit) in C:\\Users\\Matteo\\Documents\\Visual Studio 2017\\Projects\\Crediti08\\IcaCode_TEST\\ICACODE\\ICACODE.Web\\Services\\AutocompleteHandler.asmx.cs:riga 27","ExceptionType":"System.NotSupportedException"}

responseHeaders: date: Tue, 19 Feb 2019 22:03:18 GMT
server: Microsoft-IIS/10.0
x-aspnet-version: 4.0.30319
x-powered-by: ASP.NET
content-type: application/json; charset=utf-8
cache-control: private
x-sourcefiles: =?UTF-8?B?QzpcVXNlcnNcTWF0dGVvXERvY3VtZW50c1xWaXN1YWwgU3R1ZGlvIDIwMTdcUHJvamVjdHNcQ3JlZGl0aTA4XEljYUNvZGVfVEVTVFxJQ0FDT0RFXElDQUNPREUuV2ViXFNlcnZpY2VzXEF1dG9jb21wbGV0ZUhhbmRsZXIuYXNteFxQcm9jZXNzUmVxdWVzdA==?=
jsonerror: true
content-length: 2636

jsonError: true

Message: Only arguments that can be evaluated on the client are supported for the String.StartsWith method.

StackTrace: in Devart.Data.PostgreSql.Linq.Engine.PgSqlMethodCallConverter.<>c__DisplayClass36.a(SqlFactory A_0, IList`1 A_1, Type A_2)
in Devart.Data.Linq.Engine.DbMethodCallConverter.a(List`1 A_0, List`1 A_1, List`1 A_2, Type A_3, Object A_4)
in Devart.Data.Linq.Engine.DbMethodCallConverter.b(c4 A_0)
in Devart.Data.Linq.Engine.SqlVisitor.g(SqlExpression A_0)
in Devart.Data.Linq.Engine.SqlVisitor.h(SqlSelect A_0)
in Devart.Data.Linq.Engine.DbMethodCallConverter.e(SqlSelect A_0)
in Devart.Data.Linq.Engine.DbMethodCallConverter.a(h A_0)
in Devart.Data.Linq.Engine.SqlVisitor.h(SqlSelect A_0)
in Devart.Data.Linq.Engine.DbMethodCallConverter.e(SqlSelect A_0)
in Devart.Data.Linq.Engine.DbMethodCallConverter.a(h A_0)
in Devart.Data.Linq.Engine.SqlVisitor.b(SqlJoin A_0)
in Devart.Data.Linq.Engine.SqlVisitor.b(SqlJoin A_0)
in Devart.Data.Linq.Engine.SqlVisitor.b(SqlJoin A_0)
in Devart.Data.Linq.Engine.SqlVisitor.h(SqlSelect A_0)
in Devart.Data.Linq.Engine.DbMethodCallConverter.e(SqlSelect A_0)
in Devart.Data.Linq.Engine.DbMethodCallConverter.a(h A_0)
in Devart.Data.Linq.Engine.SqlVisitor.h(SqlSelect A_0)
in Devart.Data.Linq.Engine.DbMethodCallConverter.e(SqlSelect A_0)
in Devart.Data.Linq.Engine.DbMethodCallConverter.a(h A_0)
in Devart.Data.Linq.Engine.SqlVisitor.h(SqlSelect A_0)
in Devart.Data.Linq.Engine.DbMethodCallConverter.e(SqlSelect A_0)
in Devart.Data.Linq.Engine.DbMethodCallConverter.a(h A_0)
in Devart.Data.Linq.Engine.cy.a(SqlNode A_0, ResultShape& A_1)
in Devart.Data.Linq.Engine.cy.d(Expression A_0)
in Devart.Data.Linq.Engine.cy.f(Expression A_0)
in Devart.Data.Linq.CompiledQuery.a(IProvider A_0)
in Devart.Data.Linq.CompiledQuery.a(DataContext A_0, Object[] A_1)
in Devart.Data.Linq.CompiledQuery.Invoke[a,b,c,d](a A_0, b A_1, c A_2)
in ICACODE.Web.Services.AutocompleteHandler.GetAutocompleteResults(Func`4 cq, String query, Int32 limit) in C:\Users\Matteo\Documents\Visual Studio 2017\Projects\Crediti08\IcaCode_TEST\ICACODE\ICACODE.Web\Services\AutocompleteHandler.asmx.cs:riga 41
in ICACODE.Web.Services.AutocompleteHandler.ProcessRequest(String scope, String query, Int32 limit) in C:\Users\Matteo\Documents\Visual Studio 2017\Projects\Crediti08\IcaCode_TEST\ICACODE\ICACODE.Web\Services\AutocompleteHandler.asmx.cs:riga 27

ExceptionType: System.NotSupportedException

Shalex
Site Admin
Posts: 9543
Joined: Thu 14 Aug 2008 12:44

Re: error linq query Contains string

Post by Shalex » Wed 20 Feb 2019 13:32

where s.Nome.Contains(query)
Please use some string literal instead of the query itself.

ratm
Posts: 13
Joined: Thu 14 Feb 2019 11:36

Re: error linq query Contains string

Post by ratm » Wed 20 Feb 2019 13:53

(from s in context.Azione
where s.Nome.Contains("fir")
orderby s.Nome
select string.Format("{0}|{1}", new JavaScriptSerializer().Serialize(s), s.Nome)).Distinct().Take(limit)

this is the query Linq. In the web application with SQLServer i haven't problem, in the web application with devart and PostgreSQL return error?????

Shalex
Site Admin
Posts: 9543
Joined: Thu 14 Aug 2008 12:44

Re: error linq query Contains string

Post by Shalex » Thu 21 Feb 2019 14:04

Please materialize the query with .ToList(). After this, apply your serializer:

Code: Select all

var query = (from s in context. Action
              where s.Nome.Contains ("fir")
              orderby s.Nome
              select s). Distinct (). Take (limit).ToList();

var result = query.Select(s => string.Format ("{0} | {1}", new JavaScriptSerializer (). Serialize (s), s.Nome)));

Post Reply