日期:2014-05-20  浏览次数:21074 次

Linq自连接查询
数据:List<SO> 如下
SO   Line    Part               APPRAISAL
A     1           AAA               wang
A     2           BBB
A     3           CCC           
B     1           DDD             Ye
B     2           EEE              Ye
C     1           FFFF             Li
D      1          GGG             wang
D     2           HHH             

要求得出如下结果:
SO   Line    Part               APPRAISAL      
B     1           DDD             Ye
B     2           EEE              Ye
C     1           FFFF             Li
即APPRAISAL有为空的都不要。

对LINQ很不了解,望大家帮帮忙,谢谢!
------解决方案--------------------
sorry,,手写的代码:

var query=list.Where(s=>!list.Where(l=>string.IsNullEmpty(l.APPRAISAL)).Select(l=>l.SO).Contains(s.SO));

------解决方案--------------------
也来手写个,不能保证对

var query = list.GroupBy(x => x.SO).Select(y => y.ToList()).Where(x => x.All(y => !string.IsNullOrEmpty(y.APPRAISAL))).ToList();