Linq to SQL和Enumerable扩展方法,Method不支持对SQL的转换

时间:2019-05-22 14:50:19

标签: c# linq-to-sql extension-methods

类型EntitySet<T>的属性Models实现IEnumerable<T>。在Enumerable.Any中使用System.Linq会生成一个查询,但是使用自定义扩展方法会引发异常。

// Generates a query.
var a = db.Manufacturers.Where(x => !x.Models.Any(y => y.Region == "US"));

// Throws an exception.
var b = db.Manufacturers.Where(x => x.Models.None(y => y.Region == "US"));

Linq to SQL如何使用Enumerable.Any生成查询,并且我可以更改方法来执行同样的操作吗?

public static class EnumerableExtensions
{
    public static bool None<TSource>(this IEnumerable<TSource> source)
    {
        return !Enumerable.Any(source);
    }

    public static bool None<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
    {
        return !Enumerable.Any(source, predicate);
    }
}

0 个答案:

没有答案