我使用mvc和实体框架在.net中编写了代码:
@{
List<DAL.Project> oldProjectList = new BL.ProjectLogic().getProjects(userName).Where(s => s.Status == "Not Active").ToList();
}
@foreach (DAL.Project p in oldProjectList)
{
{some code}
}
第一行代码应返回“Not Active”项目列表,它实际上有效。 但它仅适用于具有“非活动”项目的用户,其他用户在foreach行中获得例外说法:
[InvalidOperationException: Sequence contains no elements]
如何解决? 感谢
答案 0 :(得分:0)
你确定你的foreach中会抛出异常吗?在这个可重复的小例子中,我执行时无法得到相同的错误:
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqPlayground
{
class Program
{
public class Project
{
public string Status { get; set; }
}
static void Main(string[] args)
{
var projects = GetProjects("test").Where(project => project.Status == "Not Active").ToList();
foreach (var project in projects)
{
Console.WriteLine(project.Status);
}
}
public static IEnumerable<Project> GetProjects(string userName)
{
return new List<Project>();
}
}
}
答案 1 :(得分:0)
使用该行的第一部分,但不使用ToList()。
而是将Where()的结果保存在var中,然后使用检查VAR。任何():
var temp = new BL.Proje s ctLogic().getProjects(userName)
.Where( => s.Status == "Not Active");
List<DAL.Project> oldProjectList =
temp.Any() ?
temp.ToList() :
new List<DAL.Project>() ;