如何使用linq从SQL数据库填充DropDownList,只选择Distinct Values

时间:2013-04-26 21:07:57

标签: c# linq

我有一个类使用linq从数据库获取数据,然后是另一个类,它将检索到的数据从列填充到DropDownBox中。我从数据库中检索的数据类型是整数。

得分列具有以下值 1 1 2 3 4 1 2 2

当填充DropDownBox时,我需要它来填充分数,但只填充distinct()

我在做这件事时没有任何错误,但是这种错误不起作用

这是获取数据的linq代码

public static IEnumerable<RiskPriorityScore> GetRiskPriorityScores()
    {
        var Scores = (from s in db.RiskPriorityScores
                      orderby s.Score
                      select s).Distinct().ToList();

        return Scores;

    }

数据仍会填充,但我仍然会重复。

这是用于将我的数据绑定到DropDownBox

的代码
protected void cboRiskPriorityScore_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
    {
        cboRiskPriorityScore.DataSource = iThNkPOCO.Models.RiskPriorityScore.GetRiskPriorityScores();
        cboRiskPriorityScore.DataBind();
    }

我相应地修改了我的代码但是当应用程序运行时我点击了DropDownbox我得到了这个错误

Object of type System.Int32 does not have a Score property.

1 个答案:

答案 0 :(得分:2)

您将返回RiskPriorityScore的列表。如果那些包含任何其他属性,那么Distinct()将无法提供您想要的内容。将您的选择限制为只想放入下拉列表中的值。像这样:

public static List<int> GetRiskPriorityScores()
{
    var Scores = (from s in db.RiskPriorityScores
                  orderby s.Score
                  select s.Score).Distinct().ToList();
}