C# Linq语法包含

C# Linq语法包含,c#,linq,C#,Linq,Linq语法 有一个标记表:数据包含标记名dogs、dog、cat 1string[]test1=new[]{“dogs”,“dog”} 将test1与标记表进行比较,并返回test1结果中未包含的标记列表:cat var item1= Tags.Where(x => !test1.Contains(x.TagName)).ToList(); 结果“cat”正确 string[]test2=new[]{“dogs”、“dog”、“cat”、“bird”} 如何将test2与标记表进行比较

Linq语法

有一个标记表:数据包含标记名dogs、dog、cat

1
string[]test1=new[]{“dogs”,“dog”}

将test1与标记表进行比较,并返回test1结果中未包含的标记列表:cat

var item1= Tags.Where(x => !test1.Contains(x.TagName)).ToList();
结果“cat”正确

  • string[]test2=new[]{“dogs”、“dog”、“cat”、“bird”}
  • 如何将test2与标记表进行比较,并返回在test2结果中找到的新项

    var item2= test2.Where(x => !Tags.Contains(test2)).ToList(); XX fails here?
    
    谢谢,

    您可以使用
    Any()

    使用:

    如果您真的对使用Contains感兴趣,那么您可以这样做:-

    var result = test2.Where(x => !Tags.Contains(x));
    

    你试过使用这个方法吗?你的问题不太清楚,你到底想实现什么“XX在这里失败?”什么意思是失败?语法失败,无法编译。我想比较test2值和标记表值。要返回在test2字符串数组中找到的所有新项。如果使用您提供的contain语法,则会出现编译错误“无法从字符串转换为模型。标记?标签是一个表格,你知道为什么吗?你需要显示“标签”的类型。在我的例子中,我使用字符串数组作为我的数据源,因此包含一个用于比较的字符串值(x是循环中test2数组的值)。代码的问题是,您直接传递的是表“标记”,而不是要比较的属性。请将包含数据的标签表中的实际属性传递给我们。感谢您的解释!
                //Datasource
                string[] Tags = { "dogs", "dog", "cat" };
                string[] test2 = new[] { "dogs", "dog", "cat", "bird" };
    
                var result = test2.Except(Tags);
    
    var result = test2.Where(x => !Tags.Contains(x));