簡體   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