从下拉列表中删除 Duplicate/Existing 值

Remove Duplicate/Existing value from dropdownlist

我想生成一个具有唯一值的下拉列表。 但是我只能生成一个从数据库生成的原始下拉列表。

我的语言 table 它包含 3 种语言: -英语、德语、韩语

对于我已经用于问题列表的语言: - 韩文

因此绑定到下拉列表的结果应该: - 英语、德语

我的控制器代码:

 List<SelectListItem> langResult = new List<SelectListItem>();

                    ///// Ori Language
                    var result = from r in db.SURV_Language_Model
                                  select r.Language; 

                    ///// Used Language
                    var result2 =   from r in db.SURV_Question_Ext_Model
                                    join s in db.SURV_Question_Model on r.Qext_Question_ID equals s.Question_ID
                                    orderby s.Question_Position ascending
                                    where r.Qext_Question_ID == Question_ID
                                    select new { r, s }; 

                    /////Remaining Language
                    result 3 =  result 2 - result 1 <==*** Pseudo code

                    foreach (var item in result3)
                    {
                        SelectListItem temp = new SelectListItem();
                        temp.Text = item;
                        temp.Value = item;
                        langResult.Add(temp);
                    }

                    ViewBag.LangList = langResult;

我的查看代码:

@Html.LabelFor(model => model.Language)
        @Html.DropDownListFor(model => model.Language, ViewBag.LangList as IEnumerable<SelectListItem>)
        @Html.ValidationMessageFor(model => model.Language, "*")

要执行此操作吗?

已通过以下代码修复,希望对大家有所帮助:

List<SelectListItem> langResult = new List<SelectListItem>();

                var result = from r in db.SURV_Language_Model
                              select r.Language;

                var result2 =   from r in db.SURV_Question_Ext_Model
                                join s in db.SURV_Question_Model on r.Qext_Question_ID equals s.Question_ID
                                orderby s.Question_Position ascending
                                where r.Qext_Question_ID == Question_ID
                                select r.Qext_Language;


                List<string> list = new List<string>(result);
                List<string> list2 = new List<string>(result2);

                for (int x = 0; x < list.Count(); x++ )
                {             
                    if ( x < list2.Count())
                    { 
                       if (list[0].ToString() == list2[x].ToString())
                       {
                           list.Remove(list[0].ToString());
                       }
                    }       

                }

                foreach (var item in list)
                {
                    SelectListItem temp = new SelectListItem();
                    temp.Text = item;
                    temp.Value = item;
                    langResult.Add(temp);
                }

                ViewBag.LangList = langResult;