我有一些对象的双级列表。我希望根据某些条件得到一些属性值的列表。
for ex
我有以下课程
public class Demo
{
public string Prop1 {get; set;}
public string Prop2 {get; set;}
}
我创建了上面的类对象的双重列表
List<List<Demo>> lst = new List<List<Demo>>();
List<Demo> lstdemo1 = new List<Demo>
lstdemo1.Add(new Demo(){Prop1 = "1", Prop2="abc"});
lstdemo1.Add(new Demo(){Prop1 = "2", Prop2="pqr"});
List<Demo> lstdemo2 = new List<Demo>
lstdemo2.Add(new Demo(){Prop1 = "1", Prop2="mno"});
lstdemo2.Add(new Demo(){Prop1 = "2", Prop2="xyz"});
lst.Add(lstdemo1);
lst.Add(lstdemo2);
现在我想得到具有Prop2值的List取决于Prop1值 例如:我想得到Prop2的列表,其中Prop1等于&#34; 1&#34;
我想要关注输出
List<string>
lstoutput
其中包含
&#34; ABC&#34;&#34; MNO&#34;
答案 0 :(得分:2)
使用SelectMany:
var result = lst.SelectMany(o => o).Where(o => o.Prop1 == "1").Select(o => o.Prop2).ToList();
答案 1 :(得分:2)
最简单的方法是使用LINQ&#39; SelectMany
来展平列表。使用查询语法中的两个from
子句来完成此操作:
var query = from x in lst
from y in x
where y.Prop1.Equals("1")
select y.Prop2;
或者,通过方法语法调用SelectMany
:
var query = lst.SelectMany(x => x.Where(y => y.Prop1.Equals("1"))
.Select(y => y.Prop2));