LINQ包含带有List <string> </string>的语法

时间:2011-04-02 04:40:25

标签: c# linq contains

我有一个带有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) ));

希望我的问题有道理(?!)。感谢。

3 个答案:

答案 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;

    列表#2中的
  • 项目从列表#1中删除,或
  • 列表#2中的
  • 项目将被插入列表#1

所以你看到同一个表达具有镜像意义。

你也可以使用!存在或!任何代替!包含。