C# 选择多个具有相同类型的2个字段
(如果标题有误导性,很抱歉。请随意编辑。) 直接举个例子:C# 选择多个具有相同类型的2个字段,c#,sql,lambda,C#,Sql,Lambda,(如果标题有误导性,很抱歉。请随意编辑。) 直接举个例子: public class A { public ObservableCollection<B> Bs; public List<D> getSelectedDs() { return [Fill in this blank]; } } public class B { public C FirstC; public C SecondC; } p
public class A
{
public ObservableCollection<B> Bs;
public List<D> getSelectedDs()
{
return [Fill in this blank];
}
}
public class B
{
public C FirstC;
public C SecondC;
}
public class C
{
public ObservableCollection<D> Ds;
}
public class D
{
public bool IsSelected;
}
另外,我想用一个lambda句子(如果用两个句子我就可以做到)
我应该在[同时获得FirstC和SecondC]
中写什么?
谢谢。公共列表getSelectedDs()
public List<D> getSelectedDs()
{
return Bs.SelectMany(b => b.FirstC.Ds.Union(b.SecondC.Ds))
.Where(x => x.IsSelected).ToList();
}
{
返回Bs.SelectMany(b=>b.FirstC.Ds.Union(b.SecondC.Ds))
.Where(x=>x.IsSelected).ToList();
}
请注意,Union
是一个集合操作,将忽略相同的对象new[]{1,1,1}。联合(new[]{1,2,3})
将返回1,2,3
。可能是所需的行为。否则,使用.Concat(…)
连接并简单地迭代两个集合。是的,你们都是对的。要使用Union
或Contact
是@Mosess上的depand
public List<D> getSelectedDs()
{
return Bs.SelectMany(b => b.FirstC.Ds.Union(b.SecondC.Ds))
.Where(x => x.IsSelected).ToList();
}