2010-11-30 9 views
3

匿名型を返すメソッドを呼び出したいと思います。私はこの匿名型の型が何であるかを知る必要があります。それは "ダイナミック"と呼ばれていますか?デバッグすると、ウォッチウィンドウにタイプが<> f__AnonymousType0と表示されます。Linq ToDictionaryは匿名型を返します

// this doesn't compile 
public static Dictionary<int,dynamic> GetRuleNamesDictionary() 
{ 
    List<ResponseRoutingRule> rules = GetResponseRoutingRules();  
    var q = (rules.Select(r => new {r.ResponseRoutingRuleId, r.RuleName})); 

    var dict1 = q.ToDictionary(d => d.ResponseRoutingRuleId); 
    var dict = q.ToDictionary(d => d.ResponseRoutingRuleId, d => d.RuleName); 
    return dict; 
} 

public static List<ResponseRoutingRule> GetResponseRoutingRules() 
{ 
    .... 
} 


public class ResponseRoutingRule 
{ 
    public int ResponseRoutingRuleId { get; set; } 
    .... 
    public string RuleName { get; set; } 
    ... 
} 

答えて

0

それはオブジェクトです:

は、ここに私のコードです。強い入力が必要な場合は、匿名にしないでください。

3

さて、あなたは実際にDictionary<int, string>を返すようです。 dictの値の型は匿名型ではありません。それは普通の古いstringです。実際には、匿名のタイプは必要ありません。またはdynamicここにはありません。

これは本当に欲しいものではないと確信していますか?

public static Dictionary<int, string> GetRuleNamesDictionary() 
{ 
    return GetResponseRoutingRules() 
      .ToDictionary(r => r.ResponseRoutingRuleId, r => r.RuleName);  
} 

そうでない場合は、理由をお知らせください。

あなた本当にdynamicに固執する場合は、当然のことながら、必要に応じてキャストできます

public static Dictionary<int, dynamic> GetRuleNamesDictionary() 
{ 
    return GetResponseRoutingRules() 
      .ToDictionary(r => r.ResponseRoutingRuleId, r => (dynamic) r.RuleName);  
} 
0

私は本当に何をしたいのか2つのプロパティを持つダイナミック型はResponseRoutingRuleIdRuleNameと呼ばれるリターンです。 MVC選択リストに割り当てることができるので、dataValueフィールドとdataTextフィールドを指定できます。私のLINQクエリで

SomeMethod(){ 
    List<{my dynamic type}> ruleObject = GetRuleObject(); 

    var ruleSelectList = new Web.Mvc.SelectList (ruleObject, "ResponseRoutingRuleId", "RuleName"); 
} 

List<{my dynamic type}> GetRuleObject(){...} 

、私は、この動的オブジェクトを取得していますが、私はGetRuleObject()に指定するどのような戻り値の型が分かりません。

関連する問題