【问题标题】:How can I do a loop within a "boolean conditional statement"?如何在“布尔条件语句”中执行循环?
【发布时间】:2015-03-20 07:18:07
【问题描述】:

如何在 C# 中的条件语句中放置循环?我在下面有一个示例,这在查询数据时可能很有用,原因有两个:它将避免写出每个项目或围绕整个查询进行遍历,如果我们假设查询是,它将避免访问列表中每个项目的数据库查询数据库,我们希望避免对数据库添加命中。那么如何在条件语句中循环,例如 if 语句或查询语句。我的看法是,在像 Ruby 这样的动态语言中它会很容易,但在 C# 或大多数静态语言中没有简单的方法。如果我遗漏了什么,请告诉我。谢谢。

List<string> certainTerritorysManagers = GetTerritoryManagers(east);
var AllSales= GetAllSales();
var EastTerritorySales =     (from sale in AllSales
             where sale.manager == manager1 || sale.manager == manager2 || ... etc.
             // *** Is there a way I can stick a foreach loop in the line above so I don't have to list all of these managers?
             // *** Pseudo code might look like: where sale.manager == ANYOF foreach (string manager in aCertainTerritoriesManagers)
             // *** If it was all && statements intead of || statements you could use the term ALLOF
             select sale).ToList();

【问题讨论】:

  • 旁注:无论您使用的是 LINQ-to-Object 还是 LINQ-to-SQL,实际答案可能会有所不同,因为并非每种类型的查询都可以转换为 SQL。

标签: c# loops conditional-statements


【解决方案1】:

我想你在找Contains

var EastTerritorySales = 
       (from sale in AllSales 
        where certainTerritoryManagers.Contains(sale.manager) 
        select sale).ToList();

【讨论】:

  • 谢谢。对于“&&”语句,是否有与 Contains() 等效的方法。这可以用在一个简单的“if”语句中吗?喜欢:if (certainTerritoryManagers.Contains(sale.manager)){}; 谢谢。
  • @EricMartin:“等同于包含 &&”是指您要比较的项目等于列表中的 所有 个项目吗?另外,是的,您为 if 语句发布的语法是完全有效的(除了末尾的分号,这不是必需的。
  • 好的,太好了。谢谢。这就是我的意思,但既然你这么说,我发现它不会很有用。
【解决方案2】:

你可以这样做:

var eastTerritorySales =
(from sale in AllSales
where certainTerritorysManagers.Contains(sale.manager)
select sale).ToList();

鉴于某些TerritorysManagers 是一个字符串列表,sale.manager 需要是一个字符串。 因此,如果管理器是另一个具有属性的类,您将需要执行以下操作:

where certainTerritorysManagers.Contains(sale.manager.Name)

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-09
    • 2020-10-27
    • 2016-05-17
    • 2019-05-06
    • 1970-01-01
    • 2014-05-12
    • 2017-03-23
    • 1970-01-01
    相关资源
    最近更新 更多