我有两节课:
public class firstClass
{
public int Id { get; set; }
public List<secondClass> Elements { get; set; }
}
public class secondClass
{
public int Id { get; set; }
public bool Is{ get; set; }
}
及其使用:
List<firstClass> list = allFirstClassFromDB.Include("Elements");
然后我的列表包含例如:
list[0] - {Id : 1, Elements : [0] { Id: 1, Is: true }, [1] { Id: 2, Is: true }, [2] { Id: 3, Is: false }
list[1] - {Id : 2, Elements : [0] { Id:4, Is: false }, [1] { Id: 5, Is: true }, [2] { Id: 6, Is: false }
list[2] - {Id : 3, Elements : [0] { Id:7, Is: false } }
所以我需要的结果只是这个包含
Elements
的位置,其中Is
属性设置为true,如下所示:list[0] - {Id : 1, Elements : [0] { Id: 1, Is: true }, [1] { Id: 2, Is: true } }
list[1] - {Id : 2, Elements : [0] { Id: 5, Is: true } }
有可能在linq吗?任何帮助,将不胜感激。
最佳答案
使用LINQ的方法如下:
var filteredList = list
.Select(
x => new firstClass {
Id = x.Id,
Elements = x.Elements.Where(y => y.Is).ToList()
}
)
.Where(x => x.Elements.Count > 0);