繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM