[英]ASP.NET MVC get specific columns from table in EF
我有一个下面的列的表。
CREATE TABLE [dbo].[tbl_QuizQue](
[id] [int] IDENTITY(1,1) NOT NULL,
[question] [nvarchar](max) NOT NULL,
[opt1] [nvarchar](50) NOT NULL,
[opt2] [nvarchar](50) NOT NULL,
[opt3] [nvarchar](50) NOT NULL,
[ans] [nvarchar](50) NOT NULL
)
我正在尝试从此表中获取随机记录,但仅获取特定列,例如id,问题,opt1,opt2,opt3。 目前我正在获取随机记录,但它正在获取所有列。 我尝试下面的代码来获取具有特定列的记录
dbUserEntities obj = new dbUserEntities();
// GET api/values
public IEnumerable<tbl_QuizQue> Get()
{
var result = obj.tbl_QuizQue.OrderBy(r => Guid.NewGuid()).Select(o => new { o.id, o.question, o.opt1, o.opt2, o.opt3 });
return result;
}
在这里,我在return result;
时低于错误return result;
Cannot implicitly convert type 'System.Linq.IQueryable<AnonymousType#1>' to
'System.Collections.Generic.IEnumerable<studentQuiz.tbl_QuizQue>'. An explicit conversion exists (are you missing a cast?)
帮助我哪里做错了。
我会这样做:
public IEnumerable<tbl_QuizQue> Get()
{
var result = obj.tbl_QuizQue.OrderBy(r => Guid.NewGuid())
.Select(o => new { o.id, o.question, o.opt1, o.opt2, o.opt3 })
.AsEnumerable()
.Select(q => new tblQuizQue {q.id, q.question, q.opt1, q.opt2, q.opt3);
return result;
}
通过首先只返回您感兴趣的列,可以约束查询。 然后,您可以将它们映射到您感兴趣的对象中。
将Get函数的返回类型更改为
IEnumerable<dynamic>
然后您的代码将执行。
至于是否是个好主意,我想您必须遵照c#部落的习惯。
我很想一直使用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.