我有以下代码(如果你有 linqpad,你可以复制粘贴并运行代码)
void Main()
{
List<data_item> itemlist1= new List<data_item>();
List<data_item> itemlist2= new List<data_item>();
itemlist1.Add(new UserQuery.data_item
{
id=1,
LeftHasdata=true
})
;
itemlist1.Add(new UserQuery.data_item
{
id=2,
LeftHasdata=false
})
;
itemlist2.Add(new UserQuery.data_item
{
id=2,
RightHasData=false
})
;
itemlist2.Add(new UserQuery.data_item
{
id=1,
RightHasData=false
})
;
itemlist2.Add(new UserQuery.data_item
{
id=3,
RightHasData=false
})
;
//var result= itemlist1.Concat(itemlist2).GroupBy(p=>p.id).Select(s => new UserQuery.data_item {
var result= itemlist1.Union(itemlist2).GroupBy(p=>p.id).Select(s => new UserQuery.data_item {
id=s.Key,
LeftHasdata=s.Where(rd=>rd.LeftHasdata!=null).Select(d=>d.LeftHasdata).FirstOrDefault(),
RightHasData=s.Where(rd=>rd.RightHasData!=null).Select(d=>d.RightHasData).FirstOrDefault(),
})
;
result.Dump();
}
// Define other methods and classes here
public class data_item
{
public int id {get;set;}
public bool? LeftHasdata { get; set; }
public bool? RightHasData { get; set; }
}
我得到以下结果:
>id LeftHasdata RightHasData
>1 True False
>2 False False
>3 null False
我只想返回 group 有多个元素的结果。这意味着不应返回最后一个结果行。我如何调整我的查询来实现这一点。
提前谢谢了
乙