0

我有一个像这样的数据表(示例):

  
当前文本 当前值 旧文本 旧值  
------------------------------------------  
测试 1 1 旧测试 1 1   
测试2 2 旧测试2 2

我想做一个联合所以结果看起来像这样

文本值 IsCurrent   
测试1 1 真   
测试2 2 真   
OldTest1 1 错误
OldTest2 2 错误   

我现在如何做到这一点:

 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();    

我唯一的问题是:有更好/更快的方法吗?

4

1 回答 1

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);
    }
于 2013-03-19T02:08:32.913 回答