C# 列表<;T>;包含作为扩展方法的方法不工作?

C# 列表<;T>;包含作为扩展方法的方法不工作?,c#,C#,我想为接受nullable对象的List类编写一个扩展方法,比如List类的Contains方法。 我的扩展方法是: public static class CustomList { public static bool Contains<T>(this List<T> lst, Nullable<T> obj) where T : struct { bool bContains = false;

我想为接受
null
able对象的List类编写一个扩展方法,比如List类的Contains方法。 我的扩展方法是:

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;
        }
}
公共静态类CustomList
{
公共静态bool包含(此列表为lst,可为null的obj),其中T:struct
{
boolbcontains=false;
if(obj==null)
{
b内容=假;
}
其他的
{
T obj1=(T)obj.值;
b容器=第一个容器(obj1);
}
返回b内容;
}
}
我调用扩展方法的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>();
var lstJobActivity=(来自context.VW_JOB_ACTIVITY中的objActivity
其中jobsassignid.Contains(objActivity.ASSIGN_ID)&&objActivity.ACTIVITY_TYPE==“JBINTV”
选择objActivity).ToList();
其中
objActivity.ASSIGN\u ID
null

显示的错误如下所示:

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>();
LINQ to Entities无法识别方法“Boolean Contains[Int64](System.Collections.Generic.List
1[System.Int64],System.Nullable
1[System.Int64]),此方法无法转换为存储表达式


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

检查此链接,它可能会对您有所帮助。不能使用
jobsassignid.Where(x=>x.ASSIGN\u ID.Equals(objActivity.ASSIGN\u ID).Any()
如果我在你的另一个问题中说的话,那就更好了,你在这里问错了。你不想写一个扩展方法,因为它不会转换为LINQ到实体。你想知道如何让LINQ到enities使用标准方法来做这件事。@MatthewWatson如果你问的话,我的答案与这两个问题都相关。@Ra我现在看到了。我正期待着一个绿色的记号。:)