在一行中创建 IEnumerable to 方法并将其传递给方法
本文关键字:方法 to IEnumerable 一行 创建 | 更新日期: 2023-09-27 18:37:11
我有这几行代码
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 并且让我发疯,还有其他方法可以在一行中解决这个问题吗? 我真的不想为我需要的一切编写条件。
Tnx寻求帮助!问候卢卡
你可以编写一个扩展方法:
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>
在引入Count
属性的 ICollection<T>
上工作,否则适当调整集合类型。
与列表初始值设定项语法相比,它的优点是您也可以将其用于已创建的列表对象(例如,如果您从工厂方法获取列表对象)。
Store.Count<Customer>(new FilterCondition[]{new FilterCondition("Customer_name",name,FilterCondition.FilterOperator.Equals)}.ToList())
您可以使用
new List<FilterConditions>() { new FilterCondition("Customer_name",name,FilterCondition.FilterOperator.Equals) }
作为列表初始值设定项
首先,我不会这样做,因为代码已经很好了,但是如果你真的想这样做,其中一个可能的伪代码可能是:
Location loct = Store.Select<Location>(new List<FilterCondition>{
new FilterCondition{value = CustomerID},
new FilterCondition{value = Location_is_last_used}
}).First();
应该为你工作。
重复一遍,在我看来,你的代码是一种更好的方式。它更容易阅读。