2017-10-19 14 views
-3

"col1"및 "col2"를 C# Linq를 사용하여 정렬하고 그룹화하여 "col3"값을 합산하려고합니다.주문, 그룹 및 합계 ExpandoObject에서 배열 목록 C#

List<dynamic> list = new List<dynamic>(); 

    dynamic expando = new ExpandoObject(); 
dynamic expando1 = new ExpandoObject(); 

    var p = expando as IDictionary<string, object>; 

    p["col1"] = "New val 1"; 
    p["col2"] = "New val 2"; 
    p["col3"] = 20; 

    list.Add(p); 

    var q = expando1 as IDictionary<string, object>; 

    q["col1"] = "New val 1"; 
    q["col2"] = "New val 3"; 
    q["col3"] = 10; 

    list.Add(q); 

내가 1

  • 새로운 발을

    새로운 발로 3


012 2
  • 새로운 발을 출력을 얻기 위해 노력하고 있어요 3,516,

    총 -

  • +1

    그리고 무엇이 문제입니까? –

    +0

    나는 linq을 처음 사용하고 있습니다. 내 결과를 얻기 위해 올바른 쿼리를 찾을 수 있습니다. –

    +2

    시도한 것을 보여주십시오. 또한 원하는 결과물이 명확하지 않습니다. 설명해주십시오. –

    답변

    0

    ExpandoObject을 생성하지만, 사전처럼 사용하는 이유는 무엇입니까 (30)? 속성 집합 (col1, col2, col3)을 알고 있다면 별도의 클래스를 만드는 것이 더 좋을 것입니다. 그렇지 않으면 다음과 같이 할 수 있습니다.

    var list = new List<dynamic>(); 
    dynamic e1 = new ExpandoObject(); 
    e1.col1 = "New val 1"; 
    e1.col2 = "New val 2"; 
    e1.col3 = 20; 
    list.Add(e1); 
    
    dynamic e2 = new ExpandoObject(); 
    e2.col1 = "New val 1"; 
    e2.col2 = "New val 3"; 
    e2.col3 = 10; 
    list.Add(e2); 
    
    foreach (var group in list 
        .OrderBy(e => e.col1) 
        .GroupBy(o => o.col1)) 
    { 
        Debug.WriteLine((string)group.Key); 
        var sum = 0; 
        foreach (var item in group) 
        { 
         Debug.WriteLine(" " + (string)item.col2); 
         sum += item.col3; 
        } 
    
        Debug.WriteLine("Total: " + sum); 
    } 
    
    +0

    코드를 보내 주셔서 감사합니다. –