我目前正在嘗試讓一個物件深深嵌套在字典和串列中。
該物件是 ProductInfo 字典中的 ProductPrice 物件。
結構是:
除錯資訊
我嘗試了以下 LINQ 但這只會回傳串列(就在物件之前)
var Lis = productInfo
.Where(x => x.Key == "Prices")
.ToDictionary(x => x.Key, x => x.Value)
.Where(x => x.Key == "Prices")
.Select(x => x.Value)
.ToList()
.First();
productinfo 類是一個型別為<string, object> 的字典。我不知道為什么 first() 命令仍然給我完整的串列而不是物件本身......關于如何迭代第一個字典的任何想法都找到價格字典然后迭代那個字典。檢索串列并最終獲得它的第一個元素?
我的 linq 的結果是她:
Linq 變數 first()
更新產品資訊類:
using System.Collections.Generic;
namespace Dynamicweb.Ecommerce.Integration
{
public class ProductInfo : Dictionary<string, object>
{
public ProductInfo();
}
}
uj5u.com熱心網友回復:
你不需要迭代任何東西。你productInfo是一個物件字典。您需要將字典訪問的值轉換為適當的型別 ( List<ProductPrice>) 并對其進行操作。在這種情況下,您可以呼叫First()以獲取串列中的第一項。
var query = ((List<ProductPrice>)productInfo["Prices"]).First();
如果字典中可能沒有“價格”,或者它不是預期的型別或可能為空,您可以檢查一下。
var query = productInfo.TryGetValue("Prices", out var v) && v is IEnumerable<ProductPrice> e
? e.FirstOrDefault()
: default;
uj5u.com熱心網友回復:
很難確定,我無法測驗這個,因為我沒有你的類或資料,所以我只能關閉你的除錯螢屏截圖
var prices = productInfo["Prices"];
價格似乎是Listsomething.something.ProductPrice。但看起來你想要第一個。所以它只是
var prices = productInfo["Prices"].First();
我不明白你為什么需要那個非常復雜的 LINQ 鏈。或者你想從 ProductPrice 類中提取一些東西
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/444628.html
上一篇:按ID排序,然后按年齡排序
