【发布时间】:2015-12-04 13:51:50
【问题描述】:
var convertedIds = ids.Select(id => Convert.ToInt32(id)).ToList();
return this.context.SupportedCharacterSets
.Where(av => converteIds.Contains(av.id))
.Select(av => new AsideItem
{
Id = av.id.ToString(CultureInfo.InvariantCulture),
Name = av.name
}).ToList();
convertedIds 是一个整数列表:{ 2, 1 } - 例如
当我从数据库中选择时,它命令它1,2(这是预期的),有没有办法不这样做?我看到你可以做一个Dictionary 对象,但不确定这是否矫枉过正?
【问题讨论】:
-
你混淆了不同的东西。 LINQ to EF 或 SQL 实际上会生成一条 SQL 语句。在您的情况下,它是带有
IN (1,2,...)子句的语句。不能保证结果会以任何顺序返回。即使在 LINQ to Object 中,Where也不会影响顺序。 whatwhere的条件并不重要。 -
我知道它会生成 SQL,我的问题不在于它生成什么,而是是否有另一种方法可以通过 convertIds 进行排序,而不是将 convertIds 添加到 Dictionary 对象中,这就是我在网上看过。我也知道 WHERE 和 ORDER BY 非常不同,问题不在于 WHERE 子句,而在于我如何订购