C# LINQ:检查字段(db)是否包含ILIST中的项?
我正在尝试创建一个扩展方法,我可以转发一个IList状态并检查它们是否存在,我认为最好的方法是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
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;
}