日期:2014-05-16  浏览次数:21103 次

求一个LINQ的写法
我有2个list<T>里面的内部结构是一样的。
假如:
                No    Time
list<1>:    A      2014-03-27
                 B      2014-03-28
                 C      2014-03-29

list<2>    B      2014-09-09
                D       2014-08-08

希望得到的数据为: 
 A     2014-03-27-""
 B     2014-03-27-2014-09-09 
 C    2014-03-29-""
 D    ""-2014-08-08
------解决方案--------------------
void Main()
{
var list1=new List<demo>
{
new demo{NO="A",Time="2014-03-27"},
new demo{NO="B",Time="2014-03-28"},
new demo{NO="C",Time="2014-03-29"},
};

var list2=new List<demo>
{
new demo{NO="B",Time="2014-09-09"},
new demo{NO="D",Time="2014-08-08"}, 
};

var result=list1.Concat(list2).GroupBy(l=>l.NO)
  .Select(g=>new demo{ NO=g.Key,Time=g.Count()==1?g.First().Time+"-\"\"":string.Join("-",g.Select(x=>x.Time).ToArray())});
 
}
class demo
{
   public string NO{get;set;}
   public string Time{get;set;}
}