Linq查询多个在哪里

时间:2010-03-31 17:49:19

标签: c# linq linq-to-sql

我正在尝试使用以下

查询我的状态更新存储库
    var result = (from s in _dataContext.StatusUpdates
                  where s.Username == "friend1" && s.Username == "friend2" etc...
                  select s).ToList();

我不是连续使用s.Username == "friendN",而是我可以传递一个列表或数组或类似的东西,而不是指定每一个,或者我可以在查询的中间使用foreach循环。

由于

4 个答案:

答案 0 :(得分:1)

对不起,伙计们,在我发布之前显然搜索得不够好。

答案在这里。

Multiple WHERE clause in Linq

答案 1 :(得分:0)

哟可以这样做:

IQueryable<s> query= _dataContext.StatusUpdates;
foreach (var item in names)
{
    query = query.Where(p=>p.Username == item);
}
List<s> result = query.ToList();

答案 2 :(得分:0)

我认为我已经破坏了你的一些数据类型,但这应该很接近:

    var names = new List<string>();
    // populate names

    var updates = new List<StatusUpdate>();
    // populate updates

    var result = (from s in updates
          where names.Contains(s.ToString())
          select s).ToList();

答案 3 :(得分:0)

如果您只需要检查Username属性是否具有某个指定值,则可以创建值列表,然后使用AllAny等方法检查某些条件适用于数组的任何/所有元素。

您的示例看起来有点可疑 - 用户名s.Username不能等于多个不同的字符串。您想检查它是否等于任何(指定)名称吗?这可以这样写:

var friends = new[] { "friend1", "friend2", ... };
var result = 
  from s in dc.StatusUpdates 
  where friends.Any(fr => s.Username == fr)
  select s;

这将返回所有状态更新,以使Username属性等于任何指定的朋友名称(指定为数组,但您可以使用任何IEnumerable<string>)。