2012-02-25 10 views
0
var sites = 
    from country in db.Countries 
    select new SitiesViewByUser()     
    {   
     Country = country.Title, 
     City = country.Cities 
      .Select(m => m.Title).ToArray()         
    }; 

都市配列文字列。どのようにエンティティにlinqの配列を取得しますか?

私は配列Cities.Title

にこのコードを取得する必要があります。

foreach(var item in sites) 

はこのエラーを取得:

Expression of LINQ to Entities does not recognize the method "System.String [] ToArray [String] (System.Collections.Generic.IEnumerable` 1 [System.String]) ", so it can not be converted into an expression store.

+0

にEF 6のために追加されました。 –

+2

あなたの問題が何であるか分かりません。上記のコードは機能していないのですか?その場合、何が間違っていますか? –

+0

私の投稿を更新する – Mediator

答えて

5

あなたはToArray()を使用し、その後、匿名型に投影することができるはず一度あなたはオブジェクトの土地にLinqに戻ってAsEnumerable()を使用して:

var sites = 
    (from country in db.Countries 
    select new 
    { 
     Country = country.Title, 
     Cities = country.Cities.Select(m => m.Title) 
    }) 
    .AsEnumerable() 
    .Select(country => new SitiesViewByUser() 
    {   
     Country = country.Title, 
     City = country.Cities.ToArray() 
    }; 

ToArray()はLinq to Entities IQueryableプロバイダー(SQLでは同等の呼び出しは何でしょうか)では定義されていないという問題があります。したがって、あなたは結果をつかんで、オブジェクトにLinqに切り替えて、、次にを必要に応じて実現することができます。

0

代わりにToList()を使用してください。あなたは既知のカウントを持つアイテムのリストを表すあなたのプロパティのタイプをICollection<T>にすることができます。 City.Title` `のタイプは、` STRING`そして、あなたが必要な正確に何を取得されている場合は

ToList()は、この作業項目http://entityframework.codeplex.com/workitem/808

関連する問題