使用LINQ我想按传入的int数组索引进行排序。
所以在下面的代码中,attribueIds是我的int数组。我正在使用该数组中的整数作为where子句,但我希望结果按照它们在数组中的顺序。
public List BuildTable(int[] attributeIds) { using (var dc = new MyDC()) { var ordering = attributeIds.ToList(); var query = from att in dc.DC.Ecs_TblAttributes where attributeIds.Contains(att.ID) orderby(ordering.IndexOf(att.ID)) select new Common.Models.Attribute { AttributeId = att.ID, DisplayName = att.DisplayName, AttributeName = att.Name }; return query.ToList(); } }
答案 0 :(得分:4)
我建议您从attributeIDs数组中进行选择。这样可确保您的商品无需排序即可正确订购。
代码应该是这样的:
var query =
from id in attributeIds
let att = dc.DC.Ecs_TblAttributes.FirstOrDefault(a => a.ID == id)
where att != null
select new Common.Models.Attribute
{
AttributeId = att.ID,
DisplayName = att.DisplayName,
AttributeName = att.Name
};
答案 1 :(得分:1)
你为什么不加入:
public List BuildTable(int[] attributeIds)
{
using (var dc = new MyDC())
{
var query = from attID in attributeIds
join att in dc.DC.Ecs_TblAttributes
on attID equals att.ID
select new Common.Models.Attribute
{
AttributeId = attID,
DisplayName = att.DisplayName,
AttributeName = att.Name
};
return query.ToList();
}
}