这很难解释。
我们有一个 DataTable,其中包含用户可配置的列选择,这些列在编译时是未知的。 DataTable 中的每一列都是字符串类型。我们需要将此 DataTable 转换为“ReturnItem”对象的强类型集合,以便我们可以使用 LINQ 进行排序和过滤以在我们的应用程序中使用。
我们在以下方面取得了一些进展:
我们一直在使用 LINQ 动态查询库,它使我们到目前为止,但它看起来不像是前进的方向,因为我们在对象的列表集合上使用它。
基本上,我的问题归结为:如何使用 LINQ,根据属于 ReturnItem 类的 List(object) 属性中的值,对 List(ReturnItem) 集合中的项目进行排序和过滤?
最佳答案
我不确定我是否理解问题所在。假设您知道要排序的列的索引并且它们是相当简单的类型,您不能只做类似...
void Main()
{
List<ReturnItem> items = new List<ReturnItem>();
items.Add(new ReturnItem()
{
ID = 1,
Columns = new List<object>()
{
DateTime.Now,
"donkey"
}
});
items.Add(new ReturnItem()
{
ID = 2,
Columns = new List<object>()
{
DateTime.Now.AddHours(3),
"baboon"
}
});
items.Add(new ReturnItem()
{
ID = 3,
Columns = new List<object>()
{
DateTime.Now.AddHours(2),
"antelope"
}
});
IEnumerable<ReturnItem> sortedByDate =
items.OrderBy(x => x.Columns[0]);
IEnumerable<ReturnItem> sortedByAnimal =
items.OrderBy(x => x.Columns[1]);
IEnumerable<ReturnItem> filteredByBaboon =
items.Where(x => x.Columns[1] == "baboon");
}
public class ReturnItem
{
public int ID;
public List<object> Columns;
}
关于c# - 如何使用 LINQ 对 List<ReturnItem> 集合中的项目进行排序和过滤?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2780346/