2011-09-14 3 views
4

나는이 권리에 대해 잘 모르겠다. LINQ 쿼리에서 돌아 오는 몇 가지 항목 만 선택하려고합니다. 결국 나는 대부분의 정보를 되 찾으려하지만, 일부 필드는 FK ID이므로 다른 테이블에서 이름 값을 가져와야 할 것입니다.Generic.List <AnonymousType # 1>을 Generic.List로 변환 할 수 없습니다. <BillEF.Bill>

내가 지금 당면하고있는 문제는 익명에서 청구서로의 목록 변환입니다. 이 문제를 어떻게 해결할 수 있습니까?

public class BillDO 
{ 
    /// <summary> 
    /// Returns all user bills based on their UserName 
    /// </summary> 
    /// <param name="UserName"></param> 
    /// <returns></returns> 
    public List<Bill> GetBills(string UserName) 
    { 
     BillsEntities be = new BillsEntities(); 

     var q = from b in be.Bills 
       where b.UserName == UserName 
       orderby b.DueDate 
       select new { b.DueDate, b.Name, b.PaymentAmount, b.URL }; 

     List<Bill> billList = q.ToList(); 

     return billList; 
    } 
} 

답변

8

우리는 정말 확실히 말할 수 없다,하지만 난 의심 당신이 할 수있다 : 즉

var q = from b in be.Bills 
     where b.UserName == UserName 
     orderby b.DueDate 
     select new { b.DueDate, b.Name, b.PaymentAmount, b.URL }; 

return q.AsEnumerable() 
     .Select(b => new Bill { DueDate = b.DueDate, 
           Name = b.Name, 
           PaymentAmount = b.PaymentAmount, 
           URL = b.URL }) 
     .ToList(); 

을, 익명 형식으로 데이터베이스에서 데이터를 가져하지만 다음을 반환 해당 속성이 복사 된 "수동으로 만든 엔터티"목록

public List<Bill> GetBills(string UserName) 
{ 
    BillsEntities be = new BillsEntities(); 

    return new List<Bill>(from b in be.Bills 
      where b.UserName == UserName 
      orderby b.DueDate 
      select new Bill { 
       DueDate = b.DueDate, 
       Name = b.Name, 
       PaymentAmount = b.PaymentAmount, 
       Url = b.URL 
      }); 
} 

이 속성은 당신이 거울 정확한을 선택한 것으로 가정합니다

1

@ 존 소총으로 우리가 Bill 어떻게 생겼는지 모르겠지만, 문맥으로부터가는, 당신이 필요로하는이 작품을 만들기 위해 말했듯 속성을 사용하고 null 참조 예외 또는 잘못된 생성자 인수가 없는지 확인하십시오.

+0

새로운 Bill 선택 항목 {...}이 Bill의 모든 속성이 아닙니다. 저는 엔티티 프레임 워크에 익숙하지 않고 어떻게 객체를 움직이는지를 잘 모릅니다. – kyle

+0

@kyle : 'List '에 대한 특별한 필요가 없다면, 정말로 당신의 EF "테이블"의 IQueryable 버전을 사용해야합니다. List는 실제로 더 많은 작업을 만듭니다. –

관련 문제