【发布时间】:2019-12-18 23:58:54
【问题描述】:
我有一个通用列表,其中有很多项目。有些项目具有特定值,例如 true,这里我需要运行一个 linq 查询,以使基于 items value=true 的特定项目能够在 var 变量中的这些项目中分离。
我尝试过使用 List.Find、FindAll、Contains
public class FilterControl
{
public bool IsItem1 { get; set; }
public bool IsItem2 { get; set; }
public bool IsItem3 { get; set; }
public bool IsItem4 { get; set; }
public bool IsItem5 { get; set; }
public bool IsItem6 { get; set; }
public bool IsItem7 { get; set; }
public bool IsItem8 { get; set; }
public bool IsItem9 { get; set; }
public bool IsItem10 { get; set; }
}
List<FilterControl> listFilters = new List<FilterControl>(){
new FilterControl() { IsItem1 = false, IsItem2 = false, IsItem3 = true, IsItem4 = false, IsItem5 = true, IsItem6 = true, IsItem7 = false, IsItem8 = true, IsItem9 = false, IsItem2 = true },
};
我试过如下:
var getAllItemsWchValueTrue = listFilters.Where(a => a.IsItem1 == true).Select(a => a.IsItem1).FirstOrDefault();
但在这段代码中,我只能检查一个项目的值为真或假。 我需要在这里检查那些我想在 Var 变量中拥有的项目的值是否为真。
【问题讨论】:
-
您发布的代码只是创建了列表。您尝试了哪些 LINQ 查询,发生了什么?为什么项目 3-10 是
int属性而不是布尔属性? (对于带有“Is”前缀的属性来说,这有点奇怪。) -
@JonSkeet:我发布了错误的项目属性类型。现在已编辑,所有都是布尔值。
-
使用了 linq 查询,但我得到的每个项目值不像基于匹配值获取所有项目。
-
恐怕我不明白评论,但您应该确切地向我们展示您尝试了哪些 LINQ 查询,以及您的预期和发生了什么,在minimal reproducible example。请非常具体 - 只是说您尝试了“LINQ 查询”并没有为我们提供足够的信息来帮助您。
-
@JonSkeet,我添加了迄今为止我尝试过的 linq 查询,并对我的实际需求发表评论。