使用字符串数组c#在linq中'orderby'

lte*_*ech 3 c# linq

假设我有一个方法定义:

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();
}
Run Code Online (Sandbox Code Playgroud)

输入参数中的我的CustomerID可以是{"1","3","400","200"}

我希望我的返回数组以上述方式排序.有没有一种简单的方法来实现这个目标?

我的解决方案是将它放入Dictionary中,然后在循环访问CustomerIDs集合时创建一个新数组.

CustomerOrderData具有名为CustomerID的属性

tva*_*son 5

如果实现了查询,则应该能够在数组中找到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();
Run Code Online (Sandbox Code Playgroud)


den*_*lic 5

我认为这解决了问题:

var orderedArray = YourCustomArray.OrderBy(s => s).ToArray();

  • Stack Overflow不会鼓励代码只回答问题,尤其是问题提出后的问题.请添加一些解释您的代码的评论. (4认同)