首页 新闻 赞助 找找看

关于 Expression 表达式拼接的问题

0
悬赏园豆:5 [已解决问题] 解决于 2015-10-13 08:50

网上的咋看不懂

请问

Expression<Func<Achivement, bool>> expression = c => c.JournalId == indexJournal.JournalId;
                if (indexJournal.Year != null)
                {
                    expression = c => c.JournalId == indexJournal.JournalId && c.Year == indexJournal.Year;
                    //Expression.
                    //Expression<Func<Achivement, bool>> expression3 = Expression.And(expression, expression).;
                }


我是不会就用这么蠢的办法 ,请问  怎么把两个拼接起来

Expression<Func<Achivement, bool>> expression = c => c.JournalId == indexJournal.JournalId;
Expression<Func<Achivement, bool>> expression2 = c =>c.Year == indexJournal.Year;
keeppuching的主页 keeppuching | 初学一级 | 园豆:6
提问于:2015-02-05 15:12
< >
分享
最佳答案
0

lambda Expression的组合会比较麻烦一点,要求Parameter相同,你这个倒是符合条件了。

但是我看了看,代码倒是不会象上面写的那么丑,但是太长了,如果要达到通用性标准,可能需要几百行代码。

你如果有兴趣研究的话,可以看看PredicateBuilder(在LinqKit)里面。

收获园豆:5
爱编程的大叔 | 高人七级 |园豆:30839 | 2015-02-05 16:48

不懂

keeppuching | 园豆:6 (初学一级) | 2015-02-06 17:37
其他回答(1)
0

不妨试试三元表达式?

Expression<Func<Achivement, bool>> expression2 = c =>c.Year != null  ? c => c.JournalId == indexJournal.JournalId && c.Year == indexJournal.Year : c.JournalId == indexJournal.JournalId ;

大楚打码人 | 园豆:4313 (老鸟四级) | 2015-02-05 16:46

我去  不用if用三元  拿给我多个用几元 ?

支持(0) 反对(0) keeppuching | 园豆:6 (初学一级) | 2015-02-06 17:37

@keeppuching: 你再仔细的看看你问的,怎么把两个拼接起来,你有提到多个?

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2015-03-04 10:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册