亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何創建一個“全局”變量來返回 linq 結果?

如何創建一個“全局”變量來返回 linq 結果?

C#
Cats萌萌 2022-06-12 14:36:57
假設我的視圖中有一個下拉列表。不同的選擇將使用不同的 linq 結果,需要返回視圖。我已經完成了查看頁面?,F在在我的控制器上,我有點卡住了。我知道 var 不能用作“全局”變量聲明。但那我該怎么辦呢?這是我的代碼:[HttpPost]    public ActionResult About(string Linq)    {        IEnumerable<NorthwindResult> Linq1;        switch (Linq)        {                            case "Most Expensive":                Linq1 = from Products in northwindEntities.Products                            where                              Products.UnitPrice ==                                (from Products0 in northwindEntities.Products                                 select new                                 {                                     Products0.UnitPrice                                 }).Max(p => p.UnitPrice)                            select new NorthwindResult                            {                                ProductName = Products.ProductName,                                UnitPrice = Products.UnitPrice                            };                break;            case "Above Average":                Linq1 = from Products in northwindEntities.Products                            where                              Products.UnitPrice >                                (from Products0 in northwindEntities.Products                                 select new                                 {                                     Products0.UnitPrice                                 }).Average(p => p.UnitPrice)                            orderby Products.UnitPrice descending                            select new NorthwindResult                            {                                ProductName = Products.ProductName,                                UnitPrice = Products.UnitPrice                            };                break;            default:                break;        }        return Linq1;    }C#林克模型視圖控制器
查看完整描述

3 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

不幸的是,你不能。有多種選擇。使用dynamic或返回一個對象。例如。例如IEnumerable<object>,IList<object>。或者,您可以使用 ProductName 和 UnitPrice 作為 poco 創建一個 Product 模型。


編輯:


這個很hacky,但可以使用。


void GetObject<T>(object anonymousObject, T cast)

{

   return (T) anonymousObject;

}

在您的模型上,您可以這樣調用:


object linqResult;

// retrieve linqResult data;

....

var obj = GetObject(linqResult, new  { ProductName = "Honda", UnitPrice = 20.0 };


This variable can be accessed as 

Console.WriteLine(obj.ProductName);


查看完整回答
反對 回復 2022-06-12
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

您可以聲明要使用的自定義類型而不是匿名類型:


public class ProductPrice

{

    public string Name { get; set; }

    public decimal Price { get;  set; }

}

然后LinqResult聲明為


IEnumarable<ProductPrice> LinqResult;

你把它select改成


select new ProductPrice { Name = Products.Product name,  Price = Products.UnitPrice };



查看完整回答
反對 回復 2022-06-12
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

如果這真的是你的全部行動,那么你就不需要這樣做。只需將 替換LinqResult =return。

但是如果你真的需要弄清楚類型,我通常會臨時聲明我設置它的變量:

var LinqResult = from ...

然后,在 Visual Studio 中,將光標懸停在變量名上,它會告訴我類型。然后我更改代碼并使用類型聲明變量。

在這種特定情況下,它將最終成為IEnumerable匿名類型,我認為您實際上無法聲明,至少不能以直接的方式聲明。這里有一些關于它的討論。


查看完整回答
反對 回復 2022-06-12
  • 3 回答
  • 0 關注
  • 164 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號