查询缓存数据,简单的linq语句

时间:2015-04-05 12:41:45

标签: c# .net linq

我有缓存数据列表

private static List<City> CachedCities
{
   get {  ... }
}

现在从缓存列表中我想使用linq提取以下内容

private someOtherMethod()
{       
   foreach (var item in someData) {
    string cityName = from c in CachedCities where c.Id == item.Address.CityId select c.Name;
    ...
   }
}

我在linq语句中遇到错误

  

错误1无法隐式转换类型

     

'System.Collections.Generic.IEnumerable<string>''string'。一个   存在显式转换(您是否错过了演员?)

P.S。 c.Id和Address.CityId都是字符串。

2 个答案:

答案 0 :(得分:3)

尝试使用此lambda查询语法

string cityName = CachedCities.Where(x => x.Id == item.Address.CityId)
                    .Select(a => a.Name)
                    .FirstOrDefault();

答案 1 :(得分:0)

这是一个编译错误。您分配给cityName的类型是IEnumerable,您将其声明为字符串。

尝试以下方法:

string cityName = CachedCities.Where(c => c.Id == item.Address.CityId).Select(x => x.Name).FirstOrDefault();