1

我有这个函数,它将根据州返回城市列表。这里是函数。

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);
}

但它给出了一个错误

字符串不包含字符串的定义

所以我的问题是假设如果我想遍历 List 我应该从函数返回什么。

有人可以指出我哪里出错了吗?

4

3 回答 3

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);
}
于 2012-07-04T06:34:31.917 回答
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);
于 2012-07-04T06:36:12.697 回答
1

GetCity方法返回一个List<string>. 因此,当您编码时

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

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

于 2012-07-04T06:36:05.903 回答