带有lambda表达式的双重过滤器

时间:2013-08-24 23:08:42

标签: c# linq filtering

我正在WPF中创建一个产品编辑表单。此表单包含以下属性的文本框:IdCodeWidthHeightColor

IdCode无法重复,因此我想在Code事件中对Code_TextChanged重复进行“检查”。

我已尝试使用以下lambda表达式进行检查:

// List<Product> products = …;
if (products.Where(x => x.code.Equals(Code.Text))
            .Count(g => !g.id.Equals(Id.Text)) > 0)
    CodeExist = true;

我不知道为什么,当我打开一个寄存器时,它会将CodeExist标记为真。

如何为过滤器product.code.Equals(Code.Text)!product.id(Id.Text)制作条件?

1 个答案:

答案 0 :(得分:3)

您可以使用“&amp;&amp;”添加多个条件(相当于SQL中的“AND”)或“||” (相当于SQL中的“OR”)。

如果集合中的一个或多个元素与条件匹配,您还可以使用LINQ“Any()”方法返回true。

所以你的if语句应为:

if(products.Any(x=>x.code.Equals(Code.Text) && !x.id.Equals(Id.Text))){
     CodeExists = true;
}

编辑:用“!”修正了小错字放置。