实体框架DBSet Any()无法按预期工作

时间:2018-01-23 16:23:35

标签: c# .net entity-framework .net-core

我正在尝试在DBSet上添加一个AddRangeUnique扩展方法,以便轻松添加唯一值,但我看到一些我怀疑是一个bug的行为,但看到我的c#体验有限,我想先在这里问一下如果我只是误解了什么。

我从代码中获取了相关代码段,其中我添加了2个变量来演示问题。

public static void AddRangeUnique<TEntity>(this DbSet<TEntity> source, IEnumerable<TEntity> other)
    where TEntity : class
{
    // contains 1 item (incorrect)
    var s1 = other.Where(x => !source.Any(y => y.Equals(x))).ToList();
    // contains 0 items (correct - expected as the item in other matches a value in source)
    var s2 = other.Where(x => !source.ToList().Any(y => y.Equals(x))).ToList();
}

我的问题是当我在where子句中使用source或source.ToList()时,为什么linq查询提供不同的结果。我希望它是一样的吗?

感谢您的帮助/指导。

0 个答案:

没有答案