2016-11-15 7 views
1

私のモデルでは、このプロパティにpublic JObject GenericData { get; set; }があります。コントローラにJobjectを作成して、このプロパティにデータを渡す必要があります。私はこれをしましたが、今はJobject内のデータをソートする必要があり、どうやってそれを行うのか分かりません。 Jobjectにはソート機能はありません。 コントローラ内のコードは次のようになります。C#Jobjectをソートする方法

var attributes = _context.AttributeRecords.Include(a => a.Attribute); 
    var queryRecords = attributes.Select(l => new 
     { 
      RecordId = l.RecordId, 
      ProjectId = l.ProjectId, 
      Attribute = l.Attribute.Description, 
      Value = l.Value, 
      InfoId = l.InfoId 
     }).ToList(); 
     var recordsValues = queryRecords.Where(b => b.InfoId == i.InfoId).ToList(); 
     var jObjectValues = new JObject(); 
     foreach (var n in recordsValues) 
     { 
      if (n.Value.Contains(",")) 
      { 
       var stringToSplit = n.Value; 
       var stringValues = stringToSplit.Split(','); 
       List<string> arr = new List<string>(); 
       var allValues = ""; 
       foreach (var d in stringValues) 
       { 
        var values = await _context.AttributeValues.FirstOrDefaultAsync(v => v.Key == n.Value); 
        arr.Add(values != null ? values.Description : d); 
        allValues = string.Join(",", arr); 
       } 
       jObjectValues.Add(n.Attribute, allValues); 
      } 
      else 
      { 
       var values = await _context.AttributeValues.FirstOrDefaultAsync(v => v.Key == n.Value); 
       jObjectValues.Add(n.Attribute, values != null ? values.Description : n.Value); 
      } 
      i.GenericData = jObjectValues; 
     } 
+0

[同じ構造の2つの任意のJTokenを比較する]のように見えます(https://stackoverflow.com/questions/33022993/compare-two-arbitrary-jtoken-s-of-the-same-structure )。それはあなたのニーズを満たしていますか? – dbc

+0

いいえ間違いなく...しかし、 '.OrderBy(o => o.Attribute)'の答えは私の問題を解決しました。ありがとう。 – error505

答えて

0

あなたはこのようにそれを行うことができますJOBJECTソートする必要はありません。

var queryRecords = attributes.Select(l => new 
    { 
     RecordId = l.RecordId, 
     ProjectId = l.ProjectId, 
     Attribute = l.Attribute.Description, 
     Value = l.Value, 
     InfoId = l.InfoId 
    }).OrderBy(o => o.Attribute).ToList(); 

私は、これはあなたを助けることを願っています。

関連する問題