3

我有一堂课,我正在像这样创建它的集合

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 dt = GetDataTableMethod();

数据表只包含名称而不包含 ID,并且名称总是小于集合。(bcoz 收藏是主收藏)

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

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

Michael
Casandra
Natasha

我试过

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

1 回答 1

2

据我了解您的问题,您有一个集合,其中包含包含 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);

演示(抱歉格式很糟糕)。

于 2013-06-03T12:13:16.967 回答