如何在“布尔条件语句”中执行循环?

时间:2015-01-21 17:04:39

标签: c# loops conditional-statements

如何在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();

2 个答案:

答案 0 :(得分:5)

我认为您正在寻找Contains

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

答案 1 :(得分:3)

您可以执行以下操作:

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

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

where certainTerritorysManagers.Contains(sale.manager.Name)

我希望它有所帮助!