Asp.net mvc 3 实体查询返回空值,如何检查?

Asp.net mvc 3 实体查询返回空值,如何检查?,asp.net-mvc-3,entity-framework,Asp.net Mvc 3,Entity Framework,我有一个实体查询: Location location = new Location(); var loc = from l in location.name where location.active = true select l; return View(loc.ToList()); 当运行时,代码抛出一个问题,因为name和active都为null。这很好,但是,有没有一种方式可以说:如果不是空返回?这会像在返回前询问loc是否为空一样简单吗

我有一个实体查询:

Location location = new Location();

var loc = from l in location.name
          where location.active = true
          select l;

return View(loc.ToList());
当运行时,代码抛出一个问题,因为name和active都为null。这很好,但是,有没有一种方式可以说:如果不是空返回?这会像在返回前询问
loc
是否为空一样简单吗

如果是这样,我该怎么做

进一步详情 我得到一个错误:

描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源

异常详细信息:System.ArgumentNullException:值不能为null。 参数名称:源

这在网上发生:

var loc = (from l in location.name
我的上下文类如下所示:

using System;
using System.Data.Entity;
using LocationApp.Models;
using System.Data.Entity.ModelConfiguration.Conventions;

namespace LocationApp.DAL
{
    public class LocationAppContext : DbContext
    {
        public DbSet<Content> Contents { get; set; }
        public DbSet<Location> Locations { get; set; }
        public DbSet<ServiceAssignment> ServiceAssignments { get; set; }
        public DbSet<Service> Services { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }
    }
}
使用系统;
使用System.Data.Entity;
使用LocationApp.模型;
使用System.Data.Entity.ModelConfiguration.Conventions;
名称空间位置app.DAL
{
公共类位置AppContext:DbContext
{
公共数据库集内容{get;set;}
公共数据库集位置{get;set;}
公共数据库集服务分配{get;set;}
公共数据库集服务{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
}
}
}

注意:此方法使用代码优先方法,我的数据库中有一个位置条目,它有一个名称,其“活动”设置为true。所以我不明白为什么会出现这种情况。

如果在默认构造函数中没有填充,那么您的位置将永远为空 字段/属性

试试这个

var location = new Location { name= "dsd", active = true};

var tmp = location.FirstOrDefault(x=>x.active);

var loc = tmp == null ? String.Empty : tmp.name;

如果要返回单个位置,请使用
FirstOrDefault
方法

此外,还需要创建DBContext类的对象,并访问其
Locations
属性以获取位置

using(var db=new LocationAppContext())
{
   var loc = (from l in db.Locations
                   where l.active == true
                   select l).FirstOrDefault();
   if(loc!=null)
      return View(loc);
   else
      return View("NotFound")
}
如果要查找集合,请在表达式上使用us
ToList()
,您可以检查
Count
属性以查看是否返回了任何项目

using(var db=new LocationAppContext())
{
   var loc = (from l in db.Locations
                  where l.active == true
                  select l).ToList();
   if(loc.Count>0)
      return View(loc);
   else
      return View("NotFound")
}

Linq查询的源集合是一个
IEnumerable
,它由
string
实现(我猜
Location.Name
是一个
string
),您将返回一个字符列表到视图中。(你真的想要这个吗?)

无论如何,源集合不能为
null
。您必须在Linq查询之前捕获此案例。如果它是
null
,则根本不能使用此Linq查询

Location location = new Location();

List<char> loc = null;
if (location.name != null)
    loc = (from l in location.name
           where location.active.HasValue && location.active.Value
           select l).ToList();
else
    loc = new List<char>();

return View(loc);
Location-Location=新位置();
List loc=null;
if(location.name!=null)
loc=(从location.name中的l开始)
其中location.active.HasValue&&location.active.Value
选择l).ToList();
其他的
loc=新列表();
返回视图(loc);

但这与实体框架无关。这只是一个内存中的查询(LINQ到对象)。

只是需要添加一些东西,我一直得到一个异常:值不能为null。参数名称:source.@TheWebs您可能还需要在LINQ表达式中使用2
=
var loc=(从location.name中的l开始。name
我使用代码优先的方法。因此,我不确定是否应该在我的模型中使用某些东西…数据库中有一个位置是
location
您的DBContext类对象?它看起来怎么样?@TheWebs:请发布相关的DBContext类