繁体   English   中英

ADO.NET 实体框架:在 Where/OrderBY 中将字符串转换为 Int

[英]ADO.NET Entity Framework: Converting String to Int in Where/OrderBY

我正在针对 ObjectContext 编写 LINQ 查询。 我在 LINQ 到实体中基本上需要做的是(我知道这行不通,但我这样做是为了说明):

from c in context.Table
where key == int.Parse(c.KeyAsString)
order by int.Parse(c.KeyAsString)
select c

我不确定这是否可能......有人知道方法吗?

谢谢。

反过来试试。 我假设“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()之类的方法将结果提取到 memory 中,您将能够转换为 int 或使用自定义比较器。

这不是看起来最干净的解决方案,但只要您的所有字符串都是有效整数,它就可以工作。 这也可以与双打一起使用

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; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM