2016-11-15 612 views
1

在我的模型中,我爲此屬性設置了public JObject GenericData { get; set; }我需要在我的Controller中創建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

看起來像是[比較兩個相同結構的任意JToken-s]的副本(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(); 

我希望這會幫助你。