【发布时间】:2013-08-25 08:11:36
【问题描述】:
我正在 WPF 中创建产品编辑表单。此表单具有以下属性的文本框:Id、Code、Width、Height 和 Color。
Id 和Code 不能重复,所以我想在我的Code_TextChanged 事件中对Code 重复“检查”。
我已尝试使用以下 lambda 表达式进行检查:
// List<Product> products = …;
if (products.Where(x => x.code.Equals(Code.Text))
.Count(g => !g.id.Equals(Id.Text)) > 0)
CodeExist = true;
我不知道为什么,当我打开一个寄存器时,它会将CodeExist标记为true。
如何为过滤器product.code.Equals(Code.Text) 和!product.id(Id.Text) 设置条件?
【问题讨论】:
-
离题:1. 使用
items.Count(…) > 0,而不是items.Any(…)。它可能会表现得更好,因为不必计算确切的计数。 2. 关于 lambda 函数的参数名称,我想知道您为什么选择x和g,而不仅仅是p(或product),这似乎更容易跟随,给定一个名为products的集合。 3. 如果您想要一个双重过滤器 (.Where),没有什么能阻止您在查询中简单地链接两个.Wheres 的明显解决方案(即使它不会最优解)。