【问题标题】:two where clause in single linq query单个 linq 查询中的两个 where 子句
【发布时间】:2011-09-03 22:02:47
【问题描述】:

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

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

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

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

【问题讨论】:

  • 答案是肯定的。你试过什么没用?
  • 我没有尝试任何东西我正在寻找任何想法......
  • 这里没有什么特别之处,只需添加一个 where 并在两个布尔语句之间放置 '&&'
  • 为什么你们投反对票......如果你知道的话,请给我建议......
  • 因为我们在这里帮助您找出您自己无法做到的事情。看起来你甚至没有尝试过。

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


【解决方案1】:

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

【讨论】:

  • @lcarus 我有点怀疑在这个查询中我应该在哪里输入 txtsrch.text 值......
  • 我可以用 txtsrch.text 值替换 nam_param
  • @user852714 正确,应将 nam_param 替换为您的 txtsrc.txt 值,并将 tran_param 替换为您用于捕获金额的任何文本字段
猜你喜欢
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
相关资源
最近更新 更多