我正在针对ObjectContext编写LINQ查询。我在LINQ to Entities中基本上需要做的就是这个(我知道这不起作用,但我这样做是为了说明):
from c in context.Table
where key == int.Parse(c.KeyAsString)
order by int.Parse(c.KeyAsString)
select c
我不确定这是否可能......有人知道吗?
感谢。
答案 0 :(得分:3)
反过来尝试一下。我假设“key”是一个变量int,所以使用ToString()将其转换为字符串,并使用它来与KeyAsString进行比较,并按顺序不要使用强制转换:
var keyString = key.ToString();
var query = from c in context.Table
where keyString == c.KeyAsString
order by c.KeyAsString
select c
如果您通过使用ToList()
或ToArray()
之类的方法将结果存入内存而无法处理订单,那么您将能够转换为int或使用自定义比较器。< / p>
答案 1 :(得分:1)
这不是最干净的解决方案,但只要所有字符串都是有效整数,它就会起作用。这也可以和双打一起使用
var query = from c in context.Table
let IntOrder = context.Table.Take(1).Select(x => c.KeyAsString).Cast<int>().FirstOrDefault()
where IntOrder == key
orderby IntOrder
select c;