假设我有一个这样的方法定义:
public CustomerOrderData[] GetCustomerOrderData(string[] CustomerIDs)
{
var query = (from a in db.Customer
join b in db.Order on a.CustomerID equals v.CustomerID
orderby CustomerIDs
select new CustomerOrderData()
{
//populate props here
}).ToArray();
}
我在输入参数中的 CustomerIDs 可以是 {"1","3","400","200"}
我希望我的返回数组以上述方式排序。有没有一种简单的方法可以实现这一目标?
我的解决方案是将其放入字典中,然后在循环遍历我的 CustomerIDs 集合时创建一个新数组。
CustomerOrderData 确实有一个名为 CustomerID 的属性
最佳答案
如果具体化查询,您应该能够在数组中找到 id 的索引并将其用作排序参数。使用扩展方法如下所示。
var ordering = CustomerIDs.ToList();
var query = db.Customer.Join( db.Order, (a,b) => a.CustomerID == b.CustomerID )
.AsEnumerable()
.OrderBy( j => ordering.IndexOf( j.Customer.CustomerID ) )
.Select( j => new CustomerOrderData {
// do selection
})
.ToArray();
关于c# - linq中的'orderby'使用字符串数组c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2283336/