繁体   English   中英

ASP.NET MVC 4从IQueryable获得价值

[英]ASP.NET MVC 4 get value from IQueryable

我在这里有此变量: var value = service.Get(UserId)它从IQueryable返回数据并具有结果。 我想从下面的屏幕快照中获取语言,我该怎么做? 我尝试过value[0].language但是没有用:(

任何的意见都将会有帮助:

在此处输入图片说明

我希望获得“英语”的语言价值,请帮助。

我试过了: string value = service.Get(UserId).FirstOrDefault().Language;

我收到错误消息“ System.Linq.IQueryable”不包含“ FirstOrDefault”的定义,并且找不到扩展方法“ FirstOrDefault”接受类型为“ System.Linq.IQueryable”的第一个参数(您是否缺少using指令还是装配参考?)'

这是我正在使用的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebMatrix.WebData;
using CTHRC.Roti.Domain.Model;
using CTHRC.Roti.Domain.Api.Services;
using CTHRC.Roti.Domain.Data.Repositories;
using CTHRC.Roti.Data.EntityFramework.Repositories;
using CTHRC.Roti.Data.EntityFramework;

IQueryables与纯数组略有不同。 为了查看结果视图,您必须枚举IQueryable。 您实际上可以在屏幕截图中看到“扩展结果视图将枚举IEnumerable”的截图。 此报价是此方案的关键。 如果未枚举IEnumerable,则不会从数据库中获取任何实际数据。 代码中有多种枚举IEnumerable的方法,例如使用.ToList,.Select,.Single,.First和其他一些方法。

我相信您将对使用.FirstOrDefault()感兴趣。 “ OrDefault”部分仅表示如果列表为空,则不会引发任何异常。 根据情况,这可能是理想的,也可能不是理想的。

string language = service.Get(UserId).FirstOrDefault().Language;

为了避免在没有返回用户的情况下出现异常,可以首先使用投影。

string language = service.Get(UserId).Select(u => u.Language).FirstOrDefault();

如果没有用户,它将产生null

尝试如下所示的Cast()

 string Language= service.Get(UserId).Cast<Users>().FirstOrDefault().Language;

您的代码值中的几个选项是项目列表,而不是值。

string xyz = value[0].Language;

要么

Just get a single item

var item = service.Get(UserId).FirstOrDefault();
string xyz = item.Language;

如果不是强类型字符串xyz = item [“ Language”];

我同意sywester的回答,但稍作调整。 您必须先检查null,否则将在系统中引入null错误。 所以

var a = service.Get(UserId).FirstOrDefault(); string Language = a!=null? a.Language : string.Empty;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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