Linq最有效的方法

时间:2013-03-20 20:59:41

标签: c# linq

我需要使用Linq语句,如下所示

      var data = db.tbl1
      .Where(w => clientIds == clientid && w.Source == source);

我有一个下拉列表,我从中获取源代码。下拉值如下:

All
NewsPaper
Web

事情是NewsPaper和Web是Source的有效值。一切都不是。 所有意味着记录可以是NewsPaper或Web。

如果他们选择All,我该如何修改w.Source,以便All表示NewsPaper或Web。 我可以执行2个单独的查询,如下所示,但不是:

    if(source == "All")
    {
       var data = db.tbl1
      .Where(w => clientIds == clientid);
    }
    else
    {
       var data = db.tbl1
      .Where(w => clientIds == clientid && w.Source == source);
    }

我喜欢在1个查询中执行此操作,因为我的查询实际上比上面显示的更复杂。

提前谢谢

2 个答案:

答案 0 :(得分:5)

试试这个:

var data = db.tbl1
  .Where(w => clientIds == clientid && (source == "All" || w.Source == source));

答案 1 :(得分:4)

@mattytommo答案是可以接受的,但我更喜欢将它们分解出来。 IMO更具可读性。

var data = db.tbl1.Where(w => clientIds == clientid);

if (source != "All")
    data = data.Where(w => w.Source == source);