2013-09-04 5 views
0

, 내가 저장 LINQ 쿼리 결과에 내 컨트롤러에 변수가 :MVC LINQ 된 IQueryable 익명 형식 처리

var test= from m in db.testTable 
      join n in db.testTable2 
      on m.ID equals n.ID into tabA 
      from a in tabA 
      join o in db.testTable3 
      on m.UserID equals o.ID 
      select new { .................}; 
if (test.Count() > 0) 
{ 
    foreach (var k in test) 
    { 
     ViewData["dropDown_xxx"] = test.Select(j => new { Value = j.ID, Text = j.Description}) 
            .AsEnumerable() 
            .Select(j => new SelectListItem // Work with in-memory objects using LINQ to Objects instead of LINQ to Entities 
          { 
           Value = j.Value.ToString(), 
           Text = j.Text 
          }).ToList(); 
        } 

위의 작품을 완벽하게 내가 할 수 드롭 다운리스트와을 ViewData를 생성 할 수 있습니다.
가 지금은 아래 그림과 같이 대신이 컨트롤러에 퍼팅의 다른 클래스에이 LINQ 쿼리를 이동하기 위해 노력하고있어 지금

public class testClass{ 
    public IQueryable<dynamic> TestMethod(){ 
     return from m in db.testTable 
     join n in db.testTable2 
     on m.ID equals n.ID into tabA 
     from a in tabA 
     join o in db.testTable3 
     on m.UserID equals o.ID 
     select new { .................}; 
    } 
}  

을 그리고 내 이전 컨트롤러에 전화 :

 var test= new testClass().TestMethod(); 
if (test.Count() > 0) 
{ 
    foreach (var k in test) 
    { 
     ViewData["dropDown_xxx"] = test.Select(j => new { Value = **j.ID**, Text = **j.Description**}) 
            .AsEnumerable() 
            .Select(j => new SelectListItem // Work with in-memory objects using LINQ to Objects instead of LINQ to Entities 
          { 
           Value = j.Value.ToString(), 
           Text = j.Text 
          }).ToList(); 
        } 

수 있습니다 나는 코드에 무슨 문제가 있는지 알아? J.IDJ.Description에서 지금 식 트리 만 TestMethod의 범위 내에서 여기에 역동적 인 동작을 동적 유형을

답변

0

를 포함하지 않을 수 불평. 새 클래스를 만들고 해당 클래스를 호출자에게 반환하는 것이 좋습니다. 익명 형식을 반환해야하는 경우

public class testClass{ 
    public IQueryable<MyClass> TestMethod(){ 
     return from m in db.testTable 
     join n in db.testTable2 
     on m.ID equals n.ID into tabA 
     from a in tabA 
     join o in db.testTable3 
     on m.UserID equals o.ID 
     select new MyClass{ .................}; 
    } 
}  

후 확인이

Can't return anonymous type from method? Really?

+0

다른 더 좋은 방법은 새로운 클래스를 만드는 대신이 있습니까? 나는 새로운 클래스를 만드는 것 이외의 해결 방법이있는 경우 "동적"을 사용하도록 할 수있다. –

+0

언어가 명확하게 지정되지 않았기 때문에 나쁘다. 이것은 실제로 MVC이므로 공유 한 링크에 표시된대로 사용할 수있는 CAST 메소드가 없습니다. 당신의 도움을 주셔서 감사합니다. –