LINQ错误:无法识别方法

时间:2011-09-02 13:39:27

标签: c# .net linq linq-to-entities

我正在使用以下代码编译没有问题但我在调用方法时收到此错误:

  

LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为商店表达式。

public IEnumerable<string> GetAllCitiesOfCountry(int id)
    {
        var ad = from a in entities.Addresses
                 where a.CountryID == id
                 select a.City.Distinct().ToString();
        var fa = from b in entities.FacilityAddresses
                 where b.CountryID == id
                 select b.City.Distinct().ToString();
        return ad.Concat(fa).Distinct();
    }

为了工作怎么能重写?

2 个答案:

答案 0 :(得分:4)

更新 - 我认为这就是你要找的东西

public IEnumerable<string> GetAllCitiesOfCountry(int id)
    {
        var ad = from a in entities.Addresses
                 where a.CountryID == id
                 select a.City;
        var fa = from b in entities.FacilityAddresses
                 where b.CountryID == id
                 select b.City;
        return ad.Union(fa).Distinct();
    }

答案 1 :(得分:3)

City是什么类型的?如果它已经是一个字符串,只需删除.Distinct().ToString()个电话。如果是复杂类型,请从类型中选择城市名称。

更新:根据您的评论,您应该删除Distint()和ToString()调用。关于城市名称集合的最终联盟应该为您提供独特的城市名称。

public IEnumerable<string> GetAllCitiesOfCountry(int id) 
{ 
    var ad = from a in entities.Addresses 
             where a.CountryID == id 
             select a.City;
    var fa = from b in entities.FacilityAddresses 
             where b.CountryID == id 
             select b.City;
    return ad.Union(fa);
}