首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序下拉列表

排序下拉列表
EN

Stack Overflow用户
提问于 2013-03-27 10:07:04
回答 4查看 127关注 0票数 2

我正在使用实体框架数据库,我希望从一个表中填充我的下拉列表,但顺序是正确的。

现在我使用的代码是:

代码语言:javascript
复制
var databaseList = from p in db.TECHNICAL_SKILLS
                   where p.skill_type == "Database"
                   select new EmployeeTechnicalSkillInfo
                       {
                           TechnicalSkillId = p.technical_skill_id,
                           SkillType = p.skill_type,
                           SkillName = p.skill_name
                       };

        List<object> sDataValue = new List<object>();
        sDataValue.Add("- Select -");
        sDataValue.Remove("Other");

        foreach (var vData in databaseList)
        {
            sDataValue.Add(vData.SkillName);
        }

        sDataValue.Add("Other");

        DropDownListDB.DataSource = sDataValue.ToArray();
        DropDownListDB.DataBind(); 

这是解决方案

代码语言:javascript
复制
    var databaseList = from p in db.TECHNICAL_SKILLS
           where p.skill_type == "Database"
           orderby p.skill_name != "Other" descending, p.skill_name
           select new EmployeeTechnicalSkillInfo
               {
                   TechnicalSkillId = p.technical_skill_id,
                   SkillType = p.skill_type,
                   SkillName = p.skill_name
               };
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-03-27 10:38:07

您可以尝试使用带有布尔值的orderby。

代码语言:javascript
复制
orderby p.skill_name != "Other" descending, p.skill_name

在您的代码=>中

代码语言:javascript
复制
var databaseList = from p in db.TECHNICAL_SKILLS
               where p.skill_type == "Database"
               orderby p.skill_name != "Other" descending, p.skill_name
               select new EmployeeTechnicalSkillInfo
                   {
                       TechnicalSkillId = p.technical_skill_id,
                       SkillType = p.skill_type,
                       SkillName = p.skill_name
                   };

    List<object> sDataValue = new List<object>();
    sDataValue.Add("- Select -");

    foreach (var vData in databaseList)
    {
        sDataValue.Add(vData.SkillName);
    }

    DropDownListDB.DataSource = sDataValue.ToArray();
    DropDownListDB.DataBind(); 
票数 0
EN

Stack Overflow用户

发布于 2013-03-27 10:10:31

从列表中删除条目-Select-,并将其作为第一项追加到List<object>

代码语言:javascript
复制
List<object> sDataValue = new List<object>();
sDataValue.Add("-Select-");
foreach (var vData in databaseList){}

我想这是最简单的方法。

编辑

然后您将使用if/else,也许和

代码语言:javascript
复制
foreach (var vData in databaseList){} //fill your list
sDataValue.Add("-Other-");
票数 3
EN

Stack Overflow用户

发布于 2013-03-27 10:13:25

就这么做吧:

-Select-Other从databaseList中删除如下:

代码语言:javascript
复制
var databaseList = from p in db.TECHNICAL_SKILLS
                   where p.skill_type == "Database"
                     && p.skill_name.ToLower() !="other"
                     && p.skill_name.ToLower() !="-select-"

                   select new EmployeeTechnicalSkillInfo
                       {
                           TechnicalSkillId = p.technical_skill_id,
                           SkillType = p.skill_type,
                           SkillName = p.skill_name
                       };

然后这样做:

代码语言:javascript
复制
DropDownListDB.DataSource = sDataValue.ToArray().OrderBy(s=>s);
DropDownListDB.Items.Insert(0, "-Select-");
DropDownListDB.Items.Add("Other");

如果您必须从数据库中引入-Select-和其他字段,那么将它们绑定到DropDownList,然后删除它们,然后再将它们插入到适当的位置是很小的开销。

您根本不需要从数据库中选择这两行。这样会更有效率。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15656191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档