C#比较2个list,并进行删选

laofang123456 2016-11-22 07:23:27
listA:
id:1 , date:2016/11/20
id:2 , date:2016/11/20
listB:
id:1 , date:2016/11/20
id:2 , date:2016/11/21
id:3 , date:2016/11/21

要求删选出listB中 date>A中的date,以及listB中有但是listA中没有的数据,删选后数据应该如下
listC:
id:2 , date:2016/11/21 date大于A中的date
id:3 , date:2016/11/21 A中没有

不要用循环,最好用lambda表达式,扩展方法,或者linq
...全文
505 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2016-11-23
  • 打赏
  • 举报
回复
1,2楼都行。
ajianchina 2016-11-22
  • 打赏
  • 举报
回复

var query = listB.Where(p =>
            {
                if (!listA.Any(s => s.id == p.id)) return true;
                if (listA.Any(s=>s.id == p.id && s.date < p.date)) return true;
                return false;
            });
csdnFUCKINGSUCKS 2016-11-22
  • 打赏
  • 举报
回复


namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
List<Entity> listA = new List<Entity>();
List<Entity> listB = new List<Entity>();

listA.AddRange(new Entity[] {
new Entity() { id = 1, date = new DateTime(2016, 11, 20) },
new Entity() { id = 2, date = new DateTime(2016, 11, 20) }
});

listB.AddRange(new Entity[] {
new Entity() { id = 1, date = new DateTime(2016, 11, 20) },
new Entity() { id = 2, date = new DateTime(2016, 11, 21) },
new Entity() { id = 3, date = new DateTime(2016, 11, 21) }
});

var result = from a in listA
join b in listB on a.id equals b.id
where b.date > a.date
select b;


listB.Except(listA, new EntityEquality()).Concat(result).ToList().ForEach(e => {
Console.WriteLine("id: " + e.id + " date: " + e.date.ToShortDateString());
});
Console.ReadLine();

}
}


public class Entity
{
public int id { get; set; }
public DateTime date { get; set; }
}

public class EntityEquality : IEqualityComparer<Entity>
{
public bool Equals(Entity x, Entity y)
{
return x.id == y.id;
}

public int GetHashCode(Entity obj)
{
if (obj == null)
{
return 0;
}
else
{
return obj.ToString().GetHashCode();
}
}
}
}

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧