我有一个带有HTTP帖子的ID列表到* .aspx页面。在服务器上,我正在尝试将该列表与对象列表进行比较,以查看哪些对象的已发布ID(也称为删除)中缺少其PrimaryKey ID字段,以及列表中没有相应对象的ID(添加)。这是我获取删除的LINQ:
List<string> ids = new List<string>(txtParticipants.Value.Split(','));
List<NetworkEvent> deletes = e.NetworkEvent.Where(c =>
!ids.Contains(c.NetworkID.ToString())).ToList<NetworkEvent>();
此删除查询工作正常。补充说,我的问题是产生相反的结果。这是我的尝试(我需要帮助)。问题是如何在Contains()谓词中引用List中的字符串?显然c本身是错的,但我该如何引用呢?
List<string> adds = newids.Where( c=> (e.NetworkEvent.Select
(z=> z.NetworkID ).Contains( int.Parse(c) ));
希望我的问题有道理(?!)。感谢。
答案 0 :(得分:1)
尝试:
var itemsAlreadyAdded = new int[] { 2, 4, 6 };
var newIds = new string[] { "2", "3" };
var itemsToAdd = newIds.Except(itemsAlreadyAdded.Select(iaa => iaa.ToString()));
foreach (var item in itemsToAdd)
{
Console.WriteLine(item);
}
Console.ReadLine();
答案 1 :(得分:0)
您可以尝试:
List<string> adds = newids.Where(id => !e.NetworkEvent.Any(e => e.NetworkID.ToString() == id)).ToList();
答案 2 :(得分:0)
对于删除,您可以像以前一样使用“!Contains”。
对于添加内容,只需使用相同表达式,但反向(即反转两个列表)。
换句话说:列表#1!包含列表#2中的内容==&gt;
所以你看到同一个表达具有镜像意义。
你也可以使用!存在或!任何代替!包含。