1

私は州に基づいて都市のリストを返すこの関数を持っています.Hereは関数です。

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 には string の定義が含まれていません

したがって、私の質問は、リストを反復処理したい場合、関数から何を返すべきかということです。

誰かが私が間違っているところを指摘できますか?

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 に答える