2016-11-15 9 views
2

Linqクエリ内でいくつかのクラスのオブジェクトを作成しようとしていますが、質問。IEnumerable 'System.Collections.Generic.List`1を実装する型は、LINQ to Entitiesクエリで初期化できません。

私のクエリは次のとおりです。

List<oneViewModel> workOrderInfoList = (from abc in db.ABC 
    join customer in db.Customers on abc.CustomerId equals customer.CustomerId into customers 
    select new oneViewModel() 
    { 
    CustomerId = abc.CustomerId, 
    OrderNumber = workOrderInfo.OrderNumber, 
    OrderDate = abc.OrderDate, 
    SecondClassList = new List<SecondClass>(), 
    }).ToList(); 

私はoneViewModel内部オブジェクトとしてではクラスのリストを定義しています。

public class ABC   
{ 
    public DateTime? WorkOrderDate { get; set; } 
    public long CustomerId { get; set; } 

    public string CustomerName { get; set; } 

    public List<SecondClass> SecondClassList { get; set; } 
} 

答えて

9

はあなたViewModelコンストラクタ内secondClassリストを初期化:

Public oneViewModel() 
{ 
    SecondClassList = new List<SecondClass>(); 
) 

Linqクエリから初期化を削除することを忘れないでください。

編集

List<oneViewModel> workOrderInfoList = (from abc in db.ABC 
    join customer in db.Customers on abc.CustomerId equals customer.CustomerId into customers 
    select new oneViewModel() 
    { 
     CustomerId = abc.CustomerId, 
     OrderNumber = workOrderInfo.OrderNumber, 
     OrderDate = abc.OrderDate, 
     SecondClassList = abc.SecondClassList 
    }).ToList(); 

編集2

あなたoneViewModel次のようなものになります。

public class oneViewModel 
{ 
    public oneViewModel 
    { 
     SecondClassList = new List<SecondClass>(); 
    } 

    Public List<SecondClass> SecondClassList { get; set; } 
} 

LINQクエリは次のようになります。

List<oneViewModel> workOrderInfoList = (from abc in db.ABC 
join customer in db.Customers on abc.CustomerId equals customer.CustomerId into customers 
select new oneViewModel() 
{ 
    CustomerId = abc.CustomerId, 
    OrderNumber = workOrderInfo.OrderNumber, 
    OrderDate = abc.OrderDate 
}).ToList(); 

これでoneViewModelオブジェクトのリストが作成されます。

+0

どのように私は1つの両方で行うことができますか?私はすでにABCの中で第二のクラスの公の公開を宣言している。 –

+0

更新の回答を参照してください。 –

+0

応答のRyanに感謝しますが、私はそれを宣言してコンストラクタで設定する方法を知りません。私はパウエルの答えに賛成した。 –

1

あなたは例えば、最初のクエリを実行し、リストを初期化する必要があります。:

List<oneViewModel> workOrderInfoList = (from abc in db.ABC 
    join customer in db.Customers on abc.CustomerId equals customer.CustomerId into customers).ToList() 
    Select(n => new oneViewModel() 
    { 
    CustomerId = n.CustomerId, 
    OrderNumber = workOrderInfo.OrderNumber, 
    OrderDate = n.OrderDate, 
    SecondClassList = new List<SecondClass>(), 
    }).ToList(); 
関連する問題