我想创建一个扩展方法,我可以转发IList的状态并检查它们存在的天气,我认为最好的方法是做一个ILIST - 但也许我错了?这是将多个项目传递给方法的最佳方式 - 列表?它是一个通用的LIST,因此不会从Object转换等。LINQ:检查一个字段(db)是否包含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;
}
并调用它我使用(下面的例子是在我的TDD中),它的工作原理很好,值在我上面的方法到达。
target.GetBuildings().WithStatus(new List<BuildingFilters.BuildingStatuses>()
{ BuildingFilters.BuildingStatuses.Available,
BuildingFilters.BuildingStatuses.Decommissioned });
所以基本上我有我的列表(IList的)它到达的扩展方法有2个值这是伟大的,但需要在LINQ说我需要说
return from v in qry
where v.Status is IN MY LIST called buildingStatus
select v;
非常感谢所有帮助,
至于我的扩展方法,它可以作为我已经做了类似1但只传递一个类型BuildingStatus因此只有1 ...
感谢您的两点意见,是的,这是很大的,忘了提,我需要调用扩展方法上的所谓向GetStringValue列表项的每个值,因为列表枚举命名BuildingStatuses的集合, GetStringValue是一个扩展方法,它返回一个字符串,我通过一个Attribute添加到每个Enum上。我想有些lambda可以做到这一点?我不确定,有什么想法? – 2009-10-14 13:15:02
如果我不调用扩展方法(它的工作原理),那么显然这个枚举将返回一个整数和它所需的字符串表示形式。我希望我能够解释这一点。 – 2009-10-14 13:19:54
我接受了一个答案,因为我的问题已经有一段时间了,并且接受的答案给了我正在寻找的解决方案 – 2009-10-14 13:48:22