首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求1lambda表达式

2012-12-26 
求一lambda表达式数据表结构如下图:一个Patient有多个ClinicalCase,一个ClinicalCase有多个Sample,一个Sam

求一lambda表达式
数据表结构如下图:一个Patient有多个ClinicalCase,一个ClinicalCase有多个Sample,一个Sample有多个SampleCustomTableRecord
求1lambda表达式

下面是SampleCustomTableRecords的一些数据:
IDRecordIndex...FK1FK2SampleID
11NULLNULLNULLNULL731311
21NULLNULLNULLNULL741631
31NULLNULLNULLNULL751691
41NULLNULLNULLaaa  76NULL1
52NULLNULLNULLNULL731321
62NULLNULLNULLNULL741671
72NULLNULLNULLNULL751711
82NULLNULLNULL76NULL1
93NULLNULLNULLNULL731311
103NULLNULLNULLNULL741631
113NULLNULLNULLNULL751711
123NULLNULLNULLNULL76NULL1
------------------------------------------
现在我想选出这样一些Samples(或ClinicalCases, 或Patients):
   RecordIndex相同的(condition1):FK1=73 and FK2=131 和 (condition2):FK1=75 and FK2=169。
由于condition有可能有很多,中间都是And关系,我想用动态创建Expression的方法实现。现在就是这个Expression不会写。难点是RecordIndex要相同,在SQL中可以用表自己join自己来实现。可怎么翻译成linq呢?如果能直接给出lambda表达式将不胜感激。



[解决办法]
.Where<T>(Predicate) 是延迟执行的,可以利用它来拼凑多个条件
[解决办法]
Expression<Func<TData, bool>> w = (data) => true;
w = (data) => w(data) && data.a == aaa; // where a = aaa
w = (data) => w(data) && data.b == bbb; // where a = aaa and b = bbb
w = (data) => w(data) 
[解决办法]
 data.c == ccc; // where (a = aaa and b = bbb) or c = ccc
...
var query = from x in datasource where w(x);
[解决办法]

引用:
在SQL中可以用表自己join自己来实现。可怎么翻译成linq呢?


var query=from  a in SampleCustomTableRecords
          join b in SampleCustomTableRecords
          on a.RecordIndex equals b.RecordIndex
          where  a.FK1==73 && a.FK2==131 && b.FK1==74 && b.FK2=163
          select a;

[解决办法]
var query = ...
...
query = from x in query
        join y in anothertable
        on x.xxx equals y.yyy
        select xxx;

热点排行