Distinct在实体框架上不起作用

时间:2019-12-27 17:48:59

标签: c# .net entity-framework linq

.Distinct()不起作用,因为您看到它正在返回重复的记录(具有相同的ID)

我也尝试过:

Vendors = c.Item.VendorSpecifications
           .Select(v => new APVendorSimpleView { Id = v.VendorId, Name = v.Vendor.Name, Code = v.Vendor.Code })
           .GroupBy(x => x.Id)
           .Select(x => x.First())
           .ToList(),

它引发了异常

IMG1 IMG2

2 个答案:

答案 0 :(得分:3)

在解释区别之前。您的异常感觉像是null ref exception中来自v.Vendor.Name的{​​{1}}。如果供应商为select APVendorSimpleView,则无法访问Name属性,并且会出现异常。

对于null,这是文档中提到的内容。

https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.distinct?view=netframework-4.8

  

如果要从某些自定义数据类型的对象序列中返回不同的元素,则必须在该类中实现IEquatable通用接口。下面的代码示例演示如何以自定义数据类型实现此接口并提供GetHashCode和Equals方法。

您的Distinct()模型是否符合上述条件?

APVendorSimpleView

答案 1 :(得分:0)

怎么样

<div class="specific-div" style="display:none"></div>

const isDisplayed = document.getElementsByClassName('specific-div')[0].style.display !== 'none';
// or
const divs = document.getElementsByClassName('specific-div');
divs.forEach(div => doSomething());