Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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# 如何在MVC中从datatable中获取一个特定列到模型中_C#_Asp.net Mvc_Asp.net Mvc 4_Razor_Model View Controller - Fatal编程技术网

C# 如何在MVC中从datatable中获取一个特定列到模型中

C# 如何在MVC中从datatable中获取一个特定列到模型中,c#,asp.net-mvc,asp.net-mvc-4,razor,model-view-controller,C#,Asp.net Mvc,Asp.net Mvc 4,Razor,Model View Controller,我想从SkillId的数据库中获取员工对自己的所有技能评分。目前,我在模型中存储了Ratings表中的所有字段,但只想获取SkillId,但它告诉我Ratings不包含SkillId的定义 model.EmployeeRatings = db.Ratings.Where(r => r.EmployeeId == User.Identity.Name.Remove(0, 8)) .OrderBy(s => s.Skil

我想从SkillId的数据库中获取员工对自己的所有技能评分。目前,我在模型中存储了Ratings表中的所有字段,但只想获取SkillId,但它告诉我Ratings不包含SkillId的定义

model.EmployeeRatings = db.Ratings.Where(r => r.EmployeeId == User.Identity.Name.Remove(0, 8))
                                  .OrderBy(s => s.SkillId);
(这是按用户的EmployeeId存储Ratings表中的所有字段)

我可以通过将它放在视图上的foreach循环中并获取所有skillid来实现这一点,但我希望将这些数据存储在模型中,以便可以轻松地将其放入视图中的HTML.DropDownListFor()中


是否可以仅从模型中的评级表中获取SkillId,并省略表中的所有其余数据?

看起来您只是在寻找
选择

...OrderBy(s => s.SkillId).Select(s => s.SkillId);
但是,如果这将用于选择列表,无论如何,您最好从一开始就构建一个
IEnumerable

.Select(s => new SelectListItem { Value = s.SkillId.ToString(), Text = s.SkillName });

将视图模型更改为IEnumerable并在将其更改为建议代码后尝试运行代码后,它给出了一个错误:“LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为存储表达式”这与
Select
语句的位置无关。这个错误从字面上告诉你问题是什么。当您选择
SkillId
时,您将得到一个
IEnumerable
(因为
SkillId
显然属于
long
)类型,它不能存储在
IEnumerable
类型的属性中:
long
Rating
不同。您需要添加另一个属性以将其存储到正确类型的文件中,或者使用类似于
ViewBag
的其他内容。非常感谢!我想我已经通过将视图模型中的类型更改为IEnumerable,而不是“LINQ to Entities不识别”
Select=>new SelectListItem
-来解决这个问题,所以做一些LINQ to Entities喜欢的事情,然后在后面转换为Select列表项,即:
.OrderBy(s=>s.SkillId)。Select(s=>new选择(x= >新的StastListITEM {Value= x.SkiLID,Text=X.SkyNeN});中间的“代码> Toistist告诉EF继续前进,并将该点转换为SQL并运行SQL,然后取结果(这只是两个字段)并将它们转换为SelectListItem。