该函数的返回类型应该是什么?

时间:2012-07-04 06:32:24

标签: c# linq compiler-errors return-type

我正在使用此功能,它将根据州返回城市列表。这是功能。

public IList<string> GetCity(int index)
{
    using (var db = new DataClasses1DataContext())
    {
         var city = db.mem_cities.Where(c => c.state_id.Equals(index)).Select(c => c.city_name).ToList();
         return city;
    }
}

现在我从我的代码后面调用这个函数就像这样。

var city = CustomerBLL.GetCity(index);

CustomerBLL是我的class

现在我想用返回的城市填充我的DropDownList。 所以我做了这样的事情。

ddlCity.DataSource = city;
ddlCity.DataBind();

这很好用。早些时候我尝试使用foreach循环

foreach (var c in city)
{
    ddlCity.Items.Add(c.city);
}

但它出错了

  

string不包含字符串

的定义

所以我的问题是假设我想迭代列表应该从函数返回什么。

有人能指出我出错的地方吗?

3 个答案:

答案 0 :(得分:3)

由于您要返回一个字符串列表,您可以简单地Add(c)代替Add(c.City)

foreach(var c in city)
{
     ddlCity.Items.Add(c);
}

或者您可以修改您的函数以返回IQueryable

    public IQueryable<City> GetCity(int index)
    {
        using (var db = new DataClasses1DataContext())
        {
            var city = db.mem_cities.Where(c => c.state_id.Equals(index));
            return city;
        }
    }

然后你可以这样做:

foreach(var c in city)
{
     ddlCity.Items.Add(c.City);
}

答案 1 :(得分:2)

不是城市名称(City.Name),而是城市本身:

public IList<City> GetCities(int stateId)
{
     return db.Cities.Where(c => c.StateId == stateId)
                     .ToList();
}

var cities = GetCities(x);
foreach (var c in cities)
{
    ddlCities.Items.Add(c.CityName);
}

var newCity = new City { CityName = "Home", StateId = x };
cities.Add(newCity);

答案 2 :(得分:1)

GetCity方法返回List<string>。因此,当你编码

foreach(var c in city)
{
  ddlCity.Items.Add(c.city);
}

每个c都是一个字符串。所以你应该做ddlCity.Items.Add(c)。