gpt4 book ai didi

c# - 使用基于类集合的 LINQ 订购 DataTable

转载 作者:行者123 更新时间:2023-11-30 17:04:59 28 4
gpt4 key购买 nike

我有一个类,我正在像这样创建它的集合

class Foo
{
public int ID { get; set; }
// ID will remain unique in collection

public string Name { get; set; }
}

List<Foo> sc = new List<Foo>();

sc.Add(new Foo()
{
ID = 0,
Name= "Michael"
});

sc.Add(new Foo()
{
ID = 2,
Name= "Natasha"
});

sc.Add(new Foo()
{
ID = 1,
Name= "Casandra"
});

然后我得到一个DataTable

DataTable dt = GetDataTableMethod();

Datatable 仅包含名称而不包含 ID,并且名称始终小于集合。 (bcoz collection is master collection)

现在我想根据 "name" 对我的数据表进行排序,但基于将基于 id 的 Foo 类集合的排序。

数据表排序后的结果应该是

Michael
Casandra
Natasha

我试过了

var v = dt.Rows.Cast<DataRow>().OrderBy(What should i write here?);

最佳答案

据我了解您的问题,您有一个集合,其中包含包含 ID 的数据和返回仅包含其组件之一的 DataTable 的存储过程。最简单的方法是遍历数据行列表并匹配完整列表中的相应值,然后排序:

 List<Foo> sc = new List<Foo>();

sc.Add(new Foo()
{
ID = 0,
Name = "Michael"
});

sc.Add(new Foo()
{
ID = 2,
Name = "Natasha"
});

sc.Add(new Foo()
{
ID = 1,
Name = "Casandra"
});

List<string> dt = new List<string>(); //For testing replaced just by string.

dt.Add("Michael");

dt.Add("Natasha");

dt.Add("Casandra");

var ordered = dt.Select(i => sc.First(c => c.Name == i)).OrderBy(i => i.ID);

Demo (sorry for awful formatting).

关于c# - 使用基于类集合的 LINQ 订购 DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16895846/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com