Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架按发行顺序_C#_Linq_Entity Framework_Exception Handling_Sql Order By - Fatal编程技术网

C# 实体框架按发行顺序

C# 实体框架按发行顺序,c#,linq,entity-framework,exception-handling,sql-order-by,C#,Linq,Entity Framework,Exception Handling,Sql Order By,我正在尝试使用实体框架构建我的第一个MVC4应用程序。我要找的就是创建一个下拉列表,每个选项的值和文本都设置为相同的值 这是有效的,直到我加入GroupBy() Create.cshtml @Html.DropDownList("CustomerName",(SelectList)ViewData["companies"]); ticketController.cs ViewBag.companies = new SelectList(oc_db.company.Where(c => c

我正在尝试使用实体框架构建我的第一个MVC4应用程序。我要找的就是创建一个下拉列表,每个选项的值和文本都设置为相同的值

这是有效的,直到我加入
GroupBy()

Create.cshtml

@Html.DropDownList("CustomerName",(SelectList)ViewData["companies"]);
ticketController.cs

ViewBag.companies = new SelectList(oc_db.company.Where(c => c.status == "ACTIVE")
                                                 .OrderBy(c => c.name_1)
                                                  .GroupBy(c=>c.name_1)
                                   , "name_1", "name_1");
以下是我收到的错误:

数据绑定: 'System.Data.Objects.Elink.InitializerMetadata+分组'2[[System.String, mscorlib,版本=4.0.0.0,区域性=中性, PublicKeyToken=b77a5c561934e089],[optsticketing.Models.company, 选项粘贴,版本=1.0.0.0,区域性=中性,PublicKeyToken=null]' 不包含名为“name_1”的属性


如果我不使用
GroupBy
,则查询可以工作,尽管存在重复项。

您必须在执行GroupBy之前解析查询,您可以通过调用
.ToList()

来完成此操作。您使用分组只是为了使列表与众不同吗?如果是,请尝试:

.Where(c => c.status == "ACTIVE")
.OrderBy(c => c.name_1)
.Distinct()
使用.Distinct()怎么样?


如果这是您所需要的,则应该可以使用。

GroupBy
不提供基础类型的枚举。它为您提供了一个
i分组
对象的枚举,其中包含一个
Key
字段,该字段为您提供该组的键值,以及一个
IEnumerable
接口,该接口允许您迭代该组的成员

如果您只需要一个按顺序排列的
name\u 1
值的唯一列表,只需选择该字段,然后执行
Distinct
,然后执行
OrderBy

ViewBag.companies = new SelectList(oc_db.company.Where(c => c.status == "ACTIVE")
                                                .Select(c=> new {c.name_1})
                                                .Distinct()
                                                .OrderBy(c => c.name_1)
                                   , "name_1", "name_1");

请注意,您可以在不使用
.Select()
的情况下执行此操作,但必须为您的
公司
类定义“相等”,这比本练习所需的麻烦多了。这就是为什么
Distinct
以前不起作用的原因-因为您没有定义两个公司的不同之处。

我在“.GroupBy()”之前删除了“.ToList()”,并收到了相同的错误。“.Distinct()”最后似乎取消了“.OrderBy()”。如果我使用“.Distinct().OrderBy()”,则列表将被排序,但不是Distinct。谢谢。这起作用了。很抱歉耽搁了,我在工作中遇到了其他事情。