Convert string to int for order using LINQ

I want to order my list using a string converted to int:

var orderedListOfRfidTags = uow.RfidTags.OrderBy(t => Convert.ToInt32(t.Number)).ToList();

but get: the 'ToInt32' method is not supported.

+3
source share
6 answers

I am one of the developers of LightSpeed.

The LINQ provider in RTM LightSpeed ​​3.11 does not support Convert.ToInt32. However, now we have added support through the nightly release, available for download now.

If you do not want to use the nightly release, you can achieve the desired result by dropping it to the query objects API and directly calling the SQL CAST function. It will look something like this:

Query query = new Query
{
  Order = Order.By(Entity.Attribute("Number")
                         .Function("CAST", new LiteralExpression("INTEGER") { EmitInline = true }))
};

uow.Find<RfidTag>(query);

LiteralExpression , LightSpeed ​​ ( SQL-). CAST SQL CAST(Number, INTEGER), CAST(Number, @p0), p0 "INTEGER". EmitInline, , .

, Convert.ToInt32 LINQ, , .

+3

:

var orderedListOfRfidTags = uow.RfidTags.OrderBy(t => t.Number).ToList();

CLR-, ORM SQL-

EDIT: , :

var orderedListOfRfidTags = uow.RfidTags.ToList().OrderBy(t => Convert.ToInt32(t.Number));

, , (linq to object), , ORM, int. , .

Edit2:

, ORM?

var orderedListOfRfidTags = uow.RfidTags.OrderBy(t => (int)t.Number).ToList();
+4
var orderedListOfRfidTags = (uow.RfidTags.ToList()).OrderBy(t => int.Parse(t.Number));
+1

, "RfidTags", ORM Lightspeed, , , Linq to Sql, , , Where OrderBy , , Linq.

, ?

var listOfRfidTags = uow.RfidTags.ToList();
var orderedListOfRfidTags = listOfRfidTags.OrderBy(t => Convert.ToInt32(t.Number));

(, , .)

!

0

int.Parse Convert. , Lightspeed , .

var orderedListOfRfidTags = uow.RfidTags
    .OrderBy(t => int.Parse(t.Number))
    .ToList();
0

So here is my solution to this problem:

var query = (from q in query select q).ToList().Where(x => Convert.ToInt32(x.col_string) > 0);

First I included IQueryable in the list, and then converted the column of the data type string to int32 for use in mathematical operations.

Hope this helps.

0
source

All Articles