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

本文关键字:两个 where 子句 linq 查询 单个 | 更新日期: 2023-09-27 18:07:20

我有一个表memberaccounts

              member_id
              member_name
              membertransactionamount
              memberaccount_id

和我的实体名称是databasecontextsearch

,我将这些细节绑定到数据网格视图使用以下方法

        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)和一个按钮(搜索)

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

当用户在文本框中输入membertransactionamount (txtsrch)时,数据网格视图将填充具有membertransactionamount的成员详细信息。

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

您可以将其"转换"为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进行比较。