ASP.NET MVC从EF中的表中获取特定列

时间:2016-07-03 14:59:02

标签: c# mysql asp.net-mvc entity-framework

我有一张下面列的表。

_malloc

我正在尝试从此表中获取随机记录,但只有特定列,如id,question,opt1,opt2,opt3。目前我正在获取随机记录,但它正在获取所有列。我尝试下面的代码来获取具有特定列的记录

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
    )

此处,我在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;

帮助我在哪里做错了。

2 个答案:

答案 0 :(得分:2)

我这样做:

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;
}

首先只返回您感兴趣的列,您可以约束查询。然后,您可以将它们映射到您感兴趣的对象中。

答案 1 :(得分:0)

将Get函数的返回类型更改为

IEnumerable<dynamic>

并且您的代码将执行。

至于这是否是一个好主意,我想你必须顺从c#部落的习俗。

我很想一直使用它。