2014-11-12 2 views
0

저는 Entity Framework가 처음이므로 다음 쿼리에서 데이터를 추출하고 결과를보기에 전달하는 방법을 알려주십시오.Linq 쿼리에서 데이터를 추출하는 방법

public ActionResult Index() 
    { 
     var query = (from c in db.Customers 
        join b in db.Banks on c.Id equals b.CustomerId 
        join bt in db.BankTransactions on b.Id equals bt.BankId 
        where c.Id == 1 
        orderby bt.Id descending 
        select new 
        { 
         Name = c.Name, 
         Balance = bt.Balance 
        }).Take(1); 

     //I want to pass Customer Name and Customer Balance to the view 

     return View(); 
    } 
+0

'return View (query.ToList());'? – artm

+0

... 당신의 뷰가 IEnumerable 을 모델로 받아 들일 만하다고 가정한다면'Return View (query.ToArray());'그렇지 않으면 익명의 타입을 사용하지 말아라 ... –

+1

당신은'.ToList()'하지만, 원인, _deferred execution_. –

답변

2

뷰 모델

public class CustomerVM 
{ 
    public string Name { get; set; } 
    public decimal Balance { get; set; } 
} 

을 만든 다음

var query = (from c in db.Customers ... 
.... 
select new CustomerVM 
{ 
    Name = c.Name, 
    Balance = bt.Balance 
}).FirstOrDefault(); 

return View(query); 

보기

에 쿼리를 수정
@model YourAssembly.CustomerVM 
... 
@Html.DisplayFor(m => m.Name) 
... 
+0

하나의 모델 만 사용하고 있습니다. 코드에서 볼 수 있듯이 세 가지 모델이 있습니다. 그래서 @ Model YourAssembly.CustomerVM을보기에 추가 할 수 없으므로 하나의 모델에만 해당됩니다. –

+1

무엇? 모든 코드 쇼는 3 개의 개별 테이블에있는 데이터를 ** 하나 ** ** 익명 객체로 결합하는 것입니다. 여기서 말하는 것은 2 개의 속성이 포함 된 익명 개체를 사용하는 것입니다. 두 개의 속성이 포함 된 뷰 모델을 사용하여보기에서 강력한 형식의 모델로 사용하고 속성을 표시 할 수 있습니다. ** 3 가지 모델을 사용하지 않고 하나의 모델에서 3 가지 테이블의 데이터를 사용하고 있습니다. –

1

나는이 snipet 확인할 컴파일되지 않았다, 그러나 당신의 문제를 해결하기 위해 당신이 뭔가를 할 수 있습니다 :

 NewObject balanceInfo = query.AsEnumerable().Select(p => new NewObject 
     { 
      CostumerName = p.Name, 
      CostumerBalance = p.Balance 
     }); 

을 내 방법이 목록을 반환 할 때 내가 많이 해. 내가 말했듯이, 나는 쿼리를 작성하지 않고 테스트를 위해 컴파일했지만, 이것이 당신의 문제를 해결할 것이라고 믿습니다.

관련 문제