如何从数据库中选择不同的行

时间:2013-11-25 20:18:38

标签: c# entity-framework entity-framework-4 linq-to-entities entity-framework-5

我正在尝试使用下面给出的代码从数据库中选择不同的行。当我运行此查询时,它不会返回我所期望的结果。我需要将不同的城市名称放入下拉控件中。

using (var context = new CountryEntities())
        {
            var city = (from u in context.Cities
                        where u.StateId == StateID
                        select new
                        {
                            cityId = u.CityId,
                            cityName = u.CityName

                        }).Distinct();


            cboCity.DataSource = city.ToList();
            cboCity.DataValueField = "CityId";
            cboCity.DataTextField = "CityName";
            cboCity.DataBind();
            cboCity.Items.Insert(0, new ListItem("--Select--", "0"));
        }

我的数据库表是

enter image description here

我该怎么办?请帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果您必须确保没有重复的城市名称,您可以这样做:

var city = context.Cities
    .Where(u => u.StateId == StateID)
    .GroupBy(u => u.CityName)
    .Select(g => new {
        cityId = g.First().CityId,
        cityName = g.Key
    });

然而,这会导致一些名称重复的城市丢掉,因为只有一个cityId会被使用。

如果您希望克服此限制,您需要引入另一个列来消除城市的歧义 - 例如,区域名称或邮政编码。然后,您需要更改代码以将此消歧标记附加到无法仅通过其名称唯一标识的城市名称。