Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ:检查字段(db)是否包含ILIST中的项?_C#_Linq_Linq To Sql_Extension Methods - Fatal编程技术网

C# LINQ:检查字段(db)是否包含ILIST中的项?

C# LINQ:检查字段(db)是否包含ILIST中的项?,c#,linq,linq-to-sql,extension-methods,C#,Linq,Linq To Sql,Extension Methods,我正在尝试创建一个扩展方法,我可以转发一个IList状态并检查它们是否存在,我认为最好的方法是IList,但也许我错了?这是将多个项传递给方法(列表)的最佳方式吗?它是一个通用列表,因此没有对象的转换等 基本上我有这个签名 public static IQueryable<Building> WithStatus(this IQueryable<Building> qry, IList<BuildingStatuses> build

我正在尝试创建一个扩展方法,我可以转发一个IList状态并检查它们是否存在,我认为最好的方法是IList,但也许我错了?这是将多个项传递给方法(列表)的最佳方式吗?它是一个通用列表,因此没有对象的转换等

基本上我有这个签名

    public static IQueryable<Building> WithStatus(this IQueryable<Building> qry,
          IList<BuildingStatuses> buildingStatus)
    {

        //PSUEDO CODE 
        //return from v in qry
        //       where v.Status is IN MY LIST called buildingStatus
        //       select v;
    }
非常感谢您的帮助


关于我的扩展方法,它的工作原理与我所做的类似,但只传递类型BuildingStatus,因此只有1…

这对您有效:

return from v in qry
       where buildingStatus.Contains(v.Status)
       select v;
您可以使用扩展方法,并使您的方法更加通用:

public static IQueryable<Building> WithStatus(this IQueryable<Building> qry,
          IEnumerable<BuildingStatuses> buildingStatus)
{

    return from v in qry
           where buildingStatus.Contains(v.Status)
           select v;
}
status的公共静态IQueryable(此IQueryable qry,
IEnumerable buildingStatus)
{
在qry中从v返回
其中buildingStatus.Contains(v.Status)
选择v;
}

我认为建议的方法是正确的。。。您还应该记住
IEnumerable.Where
方法


谢谢你的两条评论,是的,这很好,忘了提到我需要对名为GetStringValue的列表项的每个值调用一个扩展方法,因为列表是名为BuildingStatus的枚举的集合,GetStringValue是一个扩展方法,它返回我通过属性添加到每个枚举上的字符串。我想某种lambda可以做到这一点??我不确定,有什么想法吗?如果我不调用扩展方法(有效),那么很明显枚举将返回一个整数,它是我需要的字符串表示形式。我希望我能充分解释这一点。我接受了一个答案,因为我的问题有点偏离了方向,而被接受的答案给了我我一直在寻找的解决方案,因为尽管问题得到了回答,但编译查询不起作用。
return from v in qry
       where buildingStatus.Contains(v.Status)
       select v;
public static IQueryable<Building> WithStatus(this IQueryable<Building> qry,
          IEnumerable<BuildingStatuses> buildingStatus)
{

    return from v in qry
           where buildingStatus.Contains(v.Status)
           select v;
}