【问题标题】:Add undetermined number of AND on Linq-SQL Query?在 Linq-SQL 查询上添加不确定数量的 AND?
【发布时间】:2016-02-10 04:02:51
【问题描述】:

假设我有以下功能...

private List<QueryObject> ReturnSQLData (DateTime d1, DateTime d2, string[] arrayOfNames)
{
    var results = (from a in _context.Names
                   where (a.CreatedOn >= d1 && a.CreatedOn <d2)

                   select new QueryObject
                   {
                       FirstName = a.Name
                       LastName = a.LastName
                   }).ToList();

    return results;
}

我怎样才能继续创建一个 Linq 查询,其中有一些内容?

private List<QueryObject> ReturnSQLData (DateTime d1, DateTime d2, string[] arrayOfNames)
{
    var results = (from a in _context.Names
                   where (a.CreatedOn >= d1 && a.CreatedOn <d2)
                   && (arrayOfNames[0].Equals("abc") || arrayOfNames[1].Equals("cde")
                   select new QueryObject
                   {
                       FirstName = a.Name
                       LastName = a.LastName
                   }).ToList();

    return results;
}

请注意,在我实际执行代码之前,我并不真正知道 string[] 的大小。然后如何在我的 linq 查询中添加此语句?

> && (arrayOfNames[0].Equals("abc") || arrayOfNames[1].Equals("cde") ||
> ... || arrayOfNames[n].Equals("cde"))

这可能吗?

顺便说一句。我在 ASP.NET 5 MVC6 EF7 解决方案上运行它,以防它有帮助:)

谢谢!

【问题讨论】:

  • 为什么在where 条件中包含arrayOfNames[0].Equals...?这些似乎与查询无关。您不能在查询之前将它们放在if 语句中吗?

标签: c# linq linq-to-sql


【解决方案1】:

你能做到吗:

&& arrayOfNames.Contains("cde")

【讨论】:

  • 会评估数组的每个成员吗?我会试试以防万一:)
  • 确实有效!惊人的!我从没想过会这么容易……谢谢一百万!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
相关资源
最近更新 更多