0

我正在尝试查询我的数据库以从我的数据库中获取特定数据。但是,当我将查询转换为字符串时,它不会返回选择值,而是返回字符串中的整个 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);
    }
4

2 回答 2

1

像这样调用ToString()实体框架 Linq 查询实际上会返回 SQL 查询。因此,正如它所写的那样,你的代码正在做你写它要做的事情。

如果要从 中选择第一个结果IQueryable<T>,则需要First()ToString(). 所以,尝试改变

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()

根据您要完成的工作,还有更多可用的方法。如果要获取列表,请使用,或者如 Uroš Goljat 指出的那样,您可以使用该方法ToList()获取以逗号分隔的值列表。Aggregate( (a, b)=> a + ", " + b)

于 2013-11-04T18:08:11.050 回答
0

使用 Aggregate( (a, b)=> a + ", " + b) 代替 ToString() 怎么样。

问候,乌罗斯

于 2013-11-04T18:10:30.067 回答