首页 新闻 搜索 专区 学院

Linq to SQL中的一个问题,有关Expression<Func<XX, bool

0
悬赏园豆:30 [已解决问题] 解决于 2009-04-29 18:56

Hi,

这是我的两段代码:

ScDataContext db = new ScDataContext();
db.Log
= Console.Out;

Expression
<Func<TrainingType, bool>> predicate = p => p.Id == 1;

TrainingType type
= db.TrainingTypes.FirstOrDefault(predicate);

这样,生成的SQL语句就会是:Select .... From .... Where ... id = 1 ...

而如果不是向FirstOrDefault中传递表达式树,而是传入一个Func委托:

Func<TrainingType, bool> predicate = p => p.Id == 1;
TrainingType type
= db.TrainingTypes.FirstOrDefault(predicate);


那生成的SQL中就不会有Where子句。

这是什么原因呢?

 

CSDN贴:http://topic.csdn.net/u/20090419/02/3b16d644-0152-4adc-91a3-ad57c6b68ea9.html?seed=1968572159

 

水言木的主页 水言木 | 菜鸟二级 | 园豆:386
提问于:2009-04-19 10:40
< >
分享
最佳答案
0

LinqToSQL是通过遍历分析ExpressionTree来生成TSQL语句的,如果你给的不是Expression而只是一个委托那么这个委托是转不成TSQL的。

Azuresong | 老鸟四级 |园豆:3565 | 2009-04-19 14:26
其他回答(1)
0

LINQ从不用拉姆达表达式的人路过。

风海迷沙 | 园豆:4453 (老鸟四级) | 2009-04-19 11:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册