【问题标题】:Using a List as a condition for LINQ to SQL query使用列表作为 LINQ to SQL 查询的条件
【发布时间】:2010-12-22 23:27:18
【问题描述】:

我有一个 LINQ to SQL 查询,如下所示:

String NameCondition = "Test";
String EmailCondition = "test@test.com";

IQueryable<User> Users = Repository.Where(x => x.Name.Equals(NameCondition) && x.Email.Equals(EmailCondition));

但是现在我有一个条件列表,如果用户匹配其中的任何一个(如 SQL 中的 OR 语句),我想从中提取用户。所以我有一个字典列表,每个字典都是一个带有名称和电子邮件的条件:

List<Dictionary<String, String>> Conditions;

如何使用这些条件执行 LINQ to SQL 查询?

【问题讨论】:

  • 为什么有字典列表?听起来您是在说每本词典只包含一个条目。是这样吗?

标签: c# sql-server linq-to-sql


【解决方案1】:

使用约瑟夫·阿尔巴哈里的PredicateBuilder

http://www.albahari.com/nutshell/predicatebuilder.aspx

这是一个示例用法。

IQueryable<Product> SearchProducts (params string[] keywords)
{
  var predicate = PredicateBuilder.False<Product>();

  foreach (string keyword in keywords)
  {
    string temp = keyword;
    predicate = predicate.Or (p => p.Description.Contains (temp));
  }
  return dataContext.Products.Where (predicate);
}

【讨论】:

  • 为什么要编辑 Daniel.??我认为使用示例很好地支持了链接
  • @jim 使用特权很开心:-)
  • ab(use) 在我的情况下可能:-)
  • 发生了一些奇怪的事情。我不记得该示例是否在我编辑的版本中,但是我绝对没有删除它。我只更改了链接的格式。它最初是反引号引起的,导致链接不起作用。
  • 我认为这是 SO 的“5 分钟窗口”功能的结果:meta.stackexchange.com/questions/9090/…
【解决方案2】:

在 .NET 3.5 中使用 List&lt;KeyValuePair&lt;string, string&gt;&gt; 而在 .NET 4.0 中使用 List&lt;Tuple&lt;string, string&gt;&gt; 而不是字典。

看到一些类似的question

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多