如何将linq中的数组转换为实体?

Med*_*tor 0 linq-to-entities entity-framework

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

城市 - 数组字符串.

我需要得到数组Cities.Title

这段代码:

foreach(var item in sites)
Run Code Online (Sandbox Code Playgroud)

得到这个错误:

LINQ to Entities的表达式无法识别方法"System.String [] ToArray [String](System.Collections.Generic.IEnumerable` 1 [System.String])",因此无法将其转换为表达式存储.

Bro*_*ass 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()
    };
Run Code Online (Sandbox Code Playgroud)

问题是,ToArray()根本没有为Linq to Entities IQueryable提供程序定义(SQL中的等效调用是什么?).因此,您必须获取结果,切换到Linq to Objects,然后您可以根据需要实现它们.