2017-03-26 7 views
-1

いくつかの特定の変数を持つオブジェクトと、比較するために使用する同じオブジェクトの別のオブジェクトを定義して(後で使用するためにメモリに作成する)メソッドを作成しています。例えば複数のパラメータのC#ラムダ式

:私は問題を抱えているところ

public class User 
{ 
    public int UserID { get; set; } 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

// - The method 
public bool IDontKnowWhatImDoing<T>(??) where T : class 
{ 
} 

??です。私は別の方法を持っている:

public ThisWorks<T>(Expression<Func<T, bool>> expression) where T : class 
{ 
} 

そして、私は好きでそれを呼び出す:

ThisWorks<User>(u => u.UserID == 1 && u.Age >= 20); 

UserIDは1とAgeあるすべてのユーザーを取得するには今と同じか 20を超えている私が好きなものにこれに近いことができるか:

NoClue<User>(u => { u.UserID = 1, u.Name = "Whois" }); 

public void TheFunctionIWishFor<T>(??, Expression<Func<T, bool>> expression) where T : class 
{ 
    // - The ?? part is where I want to get a T from 
    // - with the specified values above (UserID 1 and "Whois" Name) 
} 

できるだけこれを達成できますか?

理由:私は今、私は、マッチングリスト/ のみ値を使用してデータベースを指定し、請求/更新を設定するには、リスト/データベースからの発現と一致するすべてのTの要素を返すメソッドを持っています。複数の条件で

// - Setting all user's names and age whose have null as Name. 
NotSureIfItsAGoodIdea<User>(u => { u.Name = "AllAsOne", u.Age = 20 }, f => f.Name == null); 
+0

可能なDUP:http://stackoverflow.com/questions/6624811/how-to-pass-anonymous-types-as-parameters – aqwert

答えて

0

、参照してください。アクション、および表現。

public static void TheFunctionIWishFor<T>(T user, Action<T> assignValuesToUser, Func<T, bool> expression) where T : class 
{ 
    if (expression(user) == true) 
    { 
     assignValuesToUser(user); 
    } 
} 
-1

ラムダexperssionはこのようなものかもしれません:見てみましょう、のような

私はあなたにそれがあなたのケースでどのように見えるかの例を与えている、私は何かを書いたこのよう あなたの名前がnullでなく、年齢が0と異なる場合、またはあなたがそこに追加したいものは何でも条件リスト..

u => u.Lists.Include(l => l.Name) 
    .Where(l => l.Name!= String.Empty && l.Age>= 0) 

複数の文は括弧でラップできます。

私は私はあなたのアイデアを得たかどうかわからないんだけど、式が真であれば何をしたいことはいくつかの値を割り当てることであれば、あなたがオブジェクトを渡して、このような何かを行うことができdocumentation

+0

これは質問に答えるか、本当にわかりません。戻り値の型(匿名型)を知らずにメソッドに '式 'を渡す方法について質問しています。この答えは、OPが既に提供しているラムダ式を書く* how *を扱うだけです。 – Rob

関連する問題