我有两节课:

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);

10-08 08:32
查看更多