单个linq查询中的两个where子句

时间:2011-09-03 22:02:47

标签: c# .net winforms entity-framework linq-to-entities

我有一个表memberaccounts

              member_id
              member_name
              membertransactionamount
              memberaccount_id

我的实体名称是databasecontextsearch

我正在使用foolwing方式将这些细节绑定到datagrid视图

        var memberdetails = from members in databasecontextsearch.memberacconuts
                              select new 
                               {  
                                  memberid = members.member_id
                                  name = members.member_name
                                  amount = members.membertransactionamount
                                 };
                         bindingsource1.datasource = memberdetails;
                        datagridview1.datasource = bindingsource1;

我有一个文本框(txtsrch)和一个按钮(搜索)

当用户在文本框(txtsrch)中输入member_name时,将根据该member_name使用datagrid视图填充成员详细信息。

当用户在文本框中输入membertransactionamount(txtsrch)时,datagrid视图将使用成员详细信息填充那些具有该membertransactionamount的人。

是否可能在单个if条件下使用linq到实体......

1 个答案:

答案 0 :(得分:2)

您可以将其“转换”为AND:

var memberdetails = from members in databasecontextsearch.memberacconuts
                    where 
                    string.IsNullOrEmpty(name_param)?true:members.memebername==name_param
                    &&
                    ((tran_param!=null?members.membertransactionamount==tran_param:true))
                    select new 
                    {  
                         memberid = members.member_id
                         name = members.member_name
                         amount = members.membertransactionamount
                    };

说明:

如果name_param为null或为空,则where条件的第一部分将计算为true;如果没有,将进行比较。

如果tran_param为null,则where的第二部分将计算为true;如果没有,将与membertransactionmaount进行比较。