Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修改此命令以从数据库中提取多个结果_C#_Sql_Linq_Entity Framework_Asp.net Mvc 4 - Fatal编程技术网

C# 如何修改此命令以从数据库中提取多个结果

C# 如何修改此命令以从数据库中提取多个结果,c#,sql,linq,entity-framework,asp.net-mvc-4,C#,Sql,Linq,Entity Framework,Asp.net Mvc 4,我正在使用此命令从数据库中提取记录: CompletionsModel student = new CompletionsModel(); try { student = db.Completions.Where(p => p.UserId == UserId).Single(); }... 问题是,当我需要使用该用户标识提取所有记录时,它正在提取(正如您可能知道的)单个记录。最初,我将UserId设置为主键,但这

我正在使用此命令从数据库中提取记录:

CompletionsModel student = new CompletionsModel();

        try
        {
            student = db.Completions.Where(p => p.UserId == UserId).Single();
        }...
问题是,当我需要使用该用户标识提取所有记录时,它正在提取(正如您可能知道的)单个记录。最初,我将UserId设置为主键,但这当然意味着它必须是唯一的。这一限制将每个用户限制为一个完成记录(当用户可以完成20-30门课程时,这没有多大帮助!)

有什么想法吗

编辑: 将ToSingle()替换为ToList()会导致以下错误:

'无法隐式转换类型 “System.Collections.Generic.List”到 “废话。模型。完成模型”

删除这两个命令并简单地在..==UserId)处结束命令会引发基本相同的错误,但只会询问我是否在某个地方丢失了强制转换

编辑2:我的观点如下

@model Blah.Models.CompletionsModel

@{
    ViewBag.Title = "Transcript";
}

<h2>@ViewBag.Title</h2>

<fieldset>
    <legend>StudentModel</legend>

    <div class="display-field">
        <table>
            <tr>
                <th>Course Title&nbsp&nbsp</th>
                <th>Course Code&nbsp&nbsp</th>
                <th>Completion Date&nbsp&nbsp</th>
            </tr>
            @try
            {
                foreach (var item in Model.PRD.CompletionsModel)
                {
                    <tr>
                        <td>
                            @Html.DisplayFor(modelItem => item.PRD.PRD_TIT)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.PRD.PRD_NUM)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.CompletionDate)
                        </td>
                    </tr>
                }
            }
            catch
            {
                <p><font color="red" size="xlarge">No course completions found.</font></p>
            }
        </table>
    </div>
</fieldset>
@model Blah.Models.CompletionsModel
@{
ViewBag.Title=“转录本”;
}
@视图包。标题
学生模型
课程名称
课程代码
完成日期
@试一试
{
foreach(Model.PRD.CompletionsModel中的var项)
{
@DisplayFor(modelItem=>item.PRD.prdtit)
@DisplayFor(modelItem=>item.PRD.PRD\u NUM)
@DisplayFor(modelItem=>item.CompletionDate)
}
}
抓住
{
未找到课程完成

}
你真的很接近了。除非我误解了什么,否则请将
Single()
替换为
ToList()

var students=newlist();
尝试
{
students=db.Completions.Where(p=>p.UserId==UserId.ToList();
}
...

这将检索具有匹配用户ID的所有记录。实际上,如果您希望有多条记录,那么对
Single()
的调用应该会引发一个异常…

如果您删除该
.ToList()
?返回值是多少?只是好奇。@Rahul:它将返回一个
IQueryable
,当您枚举它时,它将从数据库中读取(通过上下文)。@grantwiney:错误
IQueryable
是实际数据。@Dancalahan,我认为您没有尝试过答案中发布的确切代码。您不会收到该错误。您有一个视图需要一个项目,而您正试图传入一个列表。您需要对视图进行一些更改,以使其有意义。(如果您使用的是MVC自动生成的视图,则需要“列表”视图,而不是“编辑”视图。)
var students = new List<CompletionsModel>();

try
{
    students = db.Completions.Where(p => p.UserId == UserId).ToList();
}
...