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

求一lambda表达式,该怎么解决

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

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


下面是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 = ...
...
query = from x in query
join y in anothertable
on x.xxx equals y.yyy
select xxx;

热点排行