我正在尝试查询我的数据库,以便从我的数据库中获得一个特定的数据。但是,当我将查询转换为string时,它不会返回select值,而是返回字符串中的整个SQL查询。我很困惑为什么会发生这种事
public ActionResult StudiedModules()
{
Model1 studiedModules = new Model1();
List<StudiedModulesModel> listModules = new List<StudiedModulesModel>();
using (EntityOne context = new EnitityOne())
{
foreach(var module in context.StudiedModules){
studiedModules.School = context.ModuleDatas.Where(p=>p.ModuleCode == module.ModuleCode).Select(u=>u.School).ToString();
studiedModules.Subject = context.ModuleDatas.Where(p=>p.ModuleCode == module.ModuleCode).Select(u=>u.Subject).ToString();
}
}
var data = listModules;
return View(data);
}发布于 2013-11-04 18:08:11
像这样在实体Framework查询上调用ToString()实际上将返回该查询。因此,在编写代码时,您的代码正执行您编写的代码所做的工作。
如果要从IQueryable<T>中选择第一个结果,则需要在ToString()之前调用First()。所以,试着改变
studiedModules.School = context.ModuleDatas.Where(p=>p.ModuleCode == module.ModuleCode).Select(u=>u.School).ToString();
studiedModules.Subject = context.ModuleDatas.Where(p=>p.ModuleCode == module.ModuleCode).Select(u=>u.Subject).ToString()至
studiedModules.School = context.ModuleDatas.Where(p=>p.ModuleCode == module.ModuleCode).Select(u=>u.School).First().ToString();
studiedModules.Subject = context.ModuleDatas.Where(p=>p.ModuleCode == module.ModuleCode).Select(u=>u.Subject).First().ToString()根据您想要完成的任务,有更多的方法可用。如果您想获得一个列表,使用ToList(),或者如UrošGoljat所指出的,您可以使用Aggregate( (a, b)=> a + ", " + b)方法得到一个逗号分隔的值列表。
发布于 2013-11-04 18:10:30
不如使用聚合( (a,b)=> a+ ",“+ b)而不是ToString()。
你好,乌罗斯
https://stackoverflow.com/questions/19774007
复制相似问题