当前位置: 首页 > 编程语言 > C#

LINQ中的独特元素分享

时间:2023-04-10 16:20:25 C#

LINQ中的独特元素我有一个情况,我要为客户显示一个产品列表。所以,有两种产品。因此,如果客户注册了两种产品,则两种产品都会显示。所以,我需要显示不同的行。我这样做了:varqueryProducts=DbContext.CustomerProducts.Where(p=>p.Customers_Id==customerID).ToList().Select(r=>new{r.Id,r.Products_Id,ProductName=r.Product.Name,ShortName=r.Product.ShortName,Description=r.Product.Description,IsActive=r.Product.IsActive}).Distinct();这里的customerID是我从下拉列表中获得的值。但是,它仍然两次显示同一行。那么,你能告诉我如何显示不同的记录吗?最可能的原因可能是默认情况下调用不带参数的Distinct比较所有公共属性是否相等。我怀疑您的ID将是唯一的。因此,Distinct不适合你。您可以尝试类似myCustomerList.GroupBy(product=>product.Products_Id).Select(grp=>grp.First());我发现这是HowtogetdistinctinstancefromlistviaLambdaorLINQdiffer()withlambdas的答案?查看LINQ选择和匿名类型之间的区别我猜想两个相同产品之间的r.ID不同,但您有相同的Products_Id?您可以编写IEqualityComparer的实现。一旦你有了它,你就可以使用这个:.publicclassMyComparer:IEqualityComparer{//implement**Equals**and**GetHashCode**}请注意,使用此匿名比较器可能对您更有效,但它会比较匿名类型中的所有属性,而不仅仅是它仅为问题中指定的客户ID。以上为C#学习教程:LINQ中独特元素的全部内容,不代表立场,如涉及侵权,请点击右边联系管理员删除.若转载请注明出处: