2010-11-30 5 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);  
} 

그렇지 않은 경우 Google에 알려주십시오.

당신이 정말dynamic을 고수 할 경우, 수 적절한 코스 캐스트의 :

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

내가 정말 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()에서 지정한 무엇을 반환 방식을 모르는.

관련 문제