簡體   English   中英

LINQ查詢返回

[英]LINQ query return

我正在使用highcharts來顯示一些數據......但是由於我的查詢沒有以正確的格式返回某些圖表的數據,我遇到了問題。

年關鍵價值
2011 Key1 5
2011 Key2 10
2012 Key1 12
2012 Key2 8
2013 Key1 3

這是我的查詢的一部分:

XAxisList = db.Datas.Where(w => w.CategoryID == measurementID).Select(x => x.Year).Distinct(),
Data = from d in db.Datas
       where d.CategoryID == measurementID
       group d by d.DataKey into g
       select new
                 {
                   Key = g.Key,
                   Values = g.Select(s => s.Value)
                 }

這是我的linq查詢返回的內容:

"XAxisList": [
  "2011",
  "2012",
  "2013"
],
"Data": [
  {
    "Key": "Key1",
    "Values": [
      "5",
      "12"
      "3"
    ]
  },
  {
    "Key": "Key2",
    "Values": [
      "10",
      "8"
    ]
  }      
]

如何在Key2值中添加“null”數組值,使其如下所示?

"XAxisList": [
  "2011",
  "2012",
  "2013"
],
"Data": [
  {
    "Key": "Key1",
    "Values": [
      "5",
      "12"
      "3"
    ]
  },
  {
    "Key": "Key2",
    "Values": [
      "10",
      "8",
      **null**
    ]
  }      
]

在此先感謝您的幫助!

根據您的數據集,這根本無法完成。 如果您的數據集包含以下記錄

2013 Key2 null

那就沒有任何問題了。

您可以理解,如果您考慮以下因素,為什么不能這樣做:

group d by d.DataKey into g

你在那里做什么?

您正在根據DataKey屬性對記錄進行分組。 由於有兩個不同的鍵, key1key2 ,因此會有兩個組。 key1組有三個記錄, key2組有兩個記錄。

此外,我認為你無法克服這個問題。 根據您的數據我可以理解,您有一些鍵的年度值,並且您希望使用它們來創建圖表。

現在缺少key22013 所以你認為如果你可以在相應序列的末尾添加一個null ,一切都會好的。

{
    "Key": "Key2",
    "Values": [
        "10",
        "8",
        "null"
    ]
}

您是否考慮過錯過2012年價值的情況? 它會完全一樣! 因此,在Values數組的末尾添加null將沒有任何意義。

如果Year值具體或在特定范圍內,我可以提出一個想法,但我不確定是否是這種情況。

我會在查詢后對報告或圖表進行修改,否則會變得非常混亂:

XAxisList = db.Datas.Where(w => w.CategoryID == measurementID).Select(x => x.Year).Distinct(),
Data = //your query

int largest = Data.Values.Max(v => v.Count);
foreach(var d in Data)
{
    while(d.Values.Count < largest)
         d.Values.Add(null);
}

或類似的。 您可能需要使用ToList使您的Values成為列表以獲取Add方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM