-2

我想为 List 类编写一个扩展方法,就像 List 类的 Contains 方法一样,它采用一个null能够对象。我的扩展方法是:

public static class CustomList
    {
        public static bool Contains<T>(this List<T> lst, Nullable<T> obj) where T : struct
        {
            bool bContains = false;
            if (obj == null)
            {
                bContains = false;
            }
            else
            {
                T obj1 = (T)obj.Value;
                bContains = lst.Contains(obj1);
            }

            return bContains;
        }
}

我调用扩展方法的 LINQ 代码如下:

var lstJobActivity = (from objActivity in context.VW_JOB_ACTIVITY
                                  where JobAssignId.Contains(objActivity.ASSIGN_ID) && objActivity.ACTIVITY_TYPE == "JBINTV"
                                  select objActivity).ToList<VW_JOB_ACTIVITY>();

objActivity.ASSIGN_ID在哪里null

显示的错误如下所示:

LINQ to Entities 无法识别方法 'Boolean Contains[Int64](System.Collections.Generic.List 1[System.Int64], System.Nullable1[System.Int64])' 方法,并且此方法无法转换为存储表达式。

4

1 回答 1

0

这里的问题是 LINQ 必须构建一个查询并将其传递给数据库引擎。您将此函数指定为查询的一部分,并且 LINQ 足够聪明,可以知道数据库引擎不知道如何执行此函数。

于 2013-06-11T11:40:43.470 回答