c# - 在一行中创建 IEnumerable 并将其传递给方法

标签 c# ienumerable

我有这几行代码

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/

相关文章:

c# - 从 Matlab 到 C# 的多元正态随机数

c# - 从表达式函数获取属性

c# - IEnumerable<Enum> 的扩展方法?

c# - 如何仅从列表中获取特定字段

c# - 将单个值附加或前置到 IEnumerable<T> 的简单方法是什么?

c# - 从 List<MyType> 到 IEnumerable<MyType> 返回到 List<MyType> 的转换无效,为什么?

c# - 不显示 Mono Linux 上的 Latin-1 非 ASCII 符号

javascript - 第一个公共(public)模板。该怎么办?

c# - 在 try block 中尝试 catch - 异常应该调用相同的函数

c# - 为什么 IEnumerator.Current 的错误处理不同于 IEnumerator<T>.Current?