2

私はこの数行のコードを持っています

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 を返すため、これは機能しません。これを 1 行で解決する他の方法はありますか? 必要なものすべての条件を書きたくありません。

助けてTnx!よろしく、 ルカ

4

4 に答える 4

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

リスト初期化構文に対する利点は、既に作成されたリスト オブジェクトにも使用できることです (たとえば、ファクトリ メソッドからリスト オブジェクトを取得する場合)。

于 2012-06-15T08:20:34.243 に答える
0
Store.Count<Customer>(new FilterCondition[]{new FilterCondition("Customer_name",name,FilterCondition.FilterOperator.Equals)}.ToList())
于 2012-06-15T08:17:29.393 に答える
0

使用できます

new List<FilterConditions>() { new FilterCondition("Customer_name",name,FilterCondition.FilterOperator.Equals) }

リスト初期化子として

于 2012-06-15T08:17:53.360 に答える
0

まず第一に、私はそれをしません.コードはすでに良いものです .

Location loct = Store.Select<Location>(new List<FilterCondition>{
           new FilterCondition{value = CustomerID}, 
            new FilterCondition{value = Location_is_last_used}
}).First();

あなたのために働くはずです。

繰り返しますが、私の意見では、あなたのコードははるかに優れています。読みやすくなっています。

于 2012-06-15T08:18:07.657 に答える