![](/img/trans.png)
[英]How to find one value from an IQueryable in C# ASP.NET MVC 4 using Linq?
[英]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.