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

标签 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();
}

我在输入参数中的 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/

相关文章:

c# - HttpContent.ReadAsAsync 在哪里?

c# - 试图创建一个没有代码隐藏页面的 asp.net mvc viewpage

c# - TFS API获取工作项数据

c# - 条件 Lambda Foreach

c# - 文本操作

c# - 具有标志属性的枚举

c# - WPF饼图如何在切片之间添加空间?

.net - 允许用户对 DataGridView 中的 LINQ 查询中的列进行排序

c# - 使用 Entity Framework 的 Oracle 查询速度慢得离谱

c# - 如何在 lambda 表达式中放入两个条件