3

我需要使用 Linq 语句如下

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

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

All
NewsPaper
Web

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

如果他们选择全部,我如何修改 w.Source 以使全部表示 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 个查询中执行此操作,因为我的查询实际上比上面显示的更复杂。

先感谢您

4

2 回答 2

5

试试这个:

var data = db.tbl1
  .Where(w => clientIds == clientid && (source == "All" || w.Source == source));
于 2013-03-20T21:00:52.710 回答
4

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

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

if (source != "All")
    data = data.Where(w => w.Source == source);
于 2013-03-20T21:02:53.350 回答