使用LINQ中的不同值创建动态选择列表

时间:2015-06-18 06:12:59

标签: c# asp.net-mvc linq

我需要在C#中使用SelectList创建动态Linq,这是我的查询

ViewBag.net = new SelectList(db.nw.Where(m => m.client_id == 
ClientId).OrderBy(m => m.nw_ename), "nw_ename", "nw_ename");

这样可以正常工作并返回数据,但它有一些重复的值,所以我需要使用Distinct。虽然使用distinct我无法编写LINQ语句。下面是我试过的。

ViewBag.net = new SelectList((from m in db.np_nw_providers
                              where m.client_id == ClientId                                                                       
                              select m.nw_ename
                            ).Distinct()
                             .OrderBy(nw_enam => nw_enam), "m.nw_ename", "m.nw_ename");

运行时我收到错误

  

DataBinding:'System.String'不包含具有名称的属性   'M'。

我怎样才能达到同样目的。

2 个答案:

答案 0 :(得分:2)

由于您只想要nw_enam属性,因此可以使用

var items = db.nw.Where(m => m.client_id == ClientId)
                 .OrderBy(m => m.nw_enam)
                 .Select(i => i.nw_enam)
                 .Distinct();
ViewBag.net = new SelectList(items);

答案 1 :(得分:1)

"m.nw_ename"构造函数

中删除SelectList个参数
var query = (from m in db.np_nw_providers
             where m.client_id == ClientId                                                                       
             select m.nw_ename
            ).Distinct()
             .OrderBy(nw_enam => nw_enam);

ViewBag.net = new SelectList(query);