我有一个班级,我就像这样创作它的集合
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();
数据表仅包含名称而不包含ID,并且名称总是小于集合。 (bcoz collection是主人收藏)
现在我想基于"name"
对我的数据表进行排序,但是基于对基于id的Foo类集合的排序。
排序数据表后的结果应为
Michael
Casandra
Natasha
我试过
var v = dt.Rows.Cast<DataRow>().OrderBy(What should i write here?);
答案 0 :(得分: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);