我有一个这样的数据表(例子):
CurrentText CurrentValue OldText OldValue -------------------------------------------- Test1 1 OldTest1 1 Test2 2 OldTest2 2
我想做一个联盟,所以结果看起来像这个
Text Value IsCurrent Test1 1 true Test2 2 true OldTest1 1 false OldTest2 2 false
我现在如何做到这一点:
var lst = dt.AsEnumerable().Select(x => new MyClass
{
Text = x.Field<string>("CurrentText"),
Value = x.Field<string>("CurrentValue"),
IsCurrent=true
})
.Union(dt.AsEnumerable().Select(x => new MyClass
{
Text = x.Field<string>("OldText"),
Value = x.Field<string>("OldValue"),
IsCurrent=false
})
).Distinct().ToList();
我唯一的问题是:有更好/更快的方法吗?
答案 0 :(得分:0)
不知道你需要完成什么,但是为了代码可读性,也许创建一个具体的IEnuerable类会帮助别人理解和扩展它?
private static IEnumerable<Tuple<String,String>> GetPairs(ref DataTable dtr)
{
var CurrentPairs = dtr.AsEnumerable().Select(t => Tuple.Create
(
t.Field<String>("CurrentText"),
t.Field<String>("CurrentValue")
));
var NewPairs = dtr.AsEnumerable().Select(t => Tuple.Create
(
t.Field<String>("OldText"),
t.Field<String>("OldValue")
));
return CurrentPairs.Union(NewPairs);
}