我有这几行代码
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寻求帮助! 问候, 卢卡
答案 0 :(得分:1)
你可以写一个扩展方法:
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
属性,否则会适当调整集合类型。
列表初始化程序语法的优点是您也可以将其用于已创建的列表对象(例如,如果从工厂方法获取列表对象)。
答案 1 :(得分:0)
Store.Count<Customer>(new FilterCondition[]{new FilterCondition("Customer_name",name,FilterCondition.FilterOperator.Equals)}.ToList())
答案 2 :(得分:0)
您可以使用
new List<FilterConditions>() { new FilterCondition("Customer_name",name,FilterCondition.FilterOperator.Equals) }
作为列表初始值设定项
答案 3 :(得分:0)
首先,我不会这样做,导致代码已经很好,但如果你真的想要这样做,可能的伪代码之一可能是:
Location loct = Store.Select<Location>(new List<FilterCondition>{
new FilterCondition{value = CustomerID},
new FilterCondition{value = Location_is_last_used}
}).First();
应该为你工作。
重复一下,在我看来,你的代码是方式更好。它更容易阅读。