【发布时间】:2015-10-23 04:32:23
【问题描述】:
我想保留来自 sql 的默认顺序,在 Linq 处理之后。我知道这个问题以前被问过。这是一个链接Linq Where Contains ... Keep default order。
但我仍然无法将它正确应用于我的 linq 查询。有人可以帮我吗?谢谢!
这里是查询
var x = db.ItemTemplates.Where(a => a.MainGroupId == mnId)
.Where(a => a.SubGruopId == sbId)
.FirstOrDefault();
var ids = new List<int> { x.Atribute1, x.Atribute2, x.Atribute3, x.Atribute4 };
var y = db.Atributes.Where(a => ids.Contains(a.AtributeId))
.Select(g => new
{
Name = g.AtributeName,
AtType = g.AtributeType,
Options = g.atributeDetails
.Where(w=>w.AtributeDetailId!=null)
.Select(z => new
{
Value=z.AtributeDetailId,
Text=z.AtDetailVal
})
});
【问题讨论】:
-
你能准确解释一下排序出错的地方吗?
-
@Enigmativity,假设 Atribute1 表示“ben”,Atribute2 表示“attr5”,Atribute3 表示“ian”。但是在处理后 y 给出了这个命令“ian”、“ben”、“attr5”。我不知道这是根据什么排序的。但我想要以初始方式的序列。那是“ben”、“attr5”、“ian”。请帮忙..
-
您确实意识到,如果您不使用 ORDER BY,您的数据库很可能也不保证任何记录顺序?
-
@nvoigt,不,我没有根据订单在数据库中存储记录,并且根据上述查询,它从数据库中获取记录,就像它在数据库中一样。我检查了它。但在通过 linq 处理后,它会改变序列..
-
@Isuru - 我想知道排序出了什么问题。
db.Atributes之后是不是错了?在.Where(a => ids.Contains(a.AtributeId))之后?在.Select(...)之后?