我有这几行代码
FilterCondition CustomerID = new FilterCondition("Customer_ID",cust.Customer_ID,FilterCondition.FilterOperator.Equals);
List<FilterCondition> conditions = new List<FilterCondition>();
conditions.Add(CustomerID);
conditions.Add(Location_is_last_used);
Location loct = Store.Select<Location>(conditions).First();
我试着让它像这样工作
Store.Count<Customer>(new List<FilterCondition>().Add(new FilterCondition("Customer_name",name,FilterCondition.FilterOperator.Equals))
但这行不通,因为 Add 返回 void 并且它让我发疯,有没有其他方法可以在一行中解决这个问题?我真的不想为我需要的一切写条件。
求助! 问候, 卢卡
最佳答案
你可以写一个扩展方法:
public static class MyExtensions
{
public static ICollection<T> AddChainable<T>(this ICollection<T> collection, T newItem)
{
collection.Add(newItem);
return collection;
}
}
然后您可以按如下方式调用它:
Store.Count<Customer>(new List<FilterCondition>().AddChainable(new FilterCondition("Customer_name",name,FilterCondition.FilterOperator.Equals));
(假设 Store.Count<T>
作用于 ICollection<T>
,它引入了 Count
属性,否则适当调整集合类型。
与列表初始化器语法相比的优势在于,您也可以将其用于已创建的列表对象(例如,如果您从工厂方法中获取列表对象)。
关于c# - 在一行中创建 IEnumerable 并将其传递给方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11046953/