2010-08-12 4 views
0

동적이어야하는 쿼리가 있습니다. 대부분의 구문이 옳다고 생각하지만 그룹화 할 열의 이름을 지정하는 방법을 모르겠습니다. 나는 몇 가지 다른 방법을 시도하고 난 항상 오류 얻을 - 내가 Field<string>("name") 같은 것을 사용할 수 있다고 가정 "아니오 속성 또는 필드 '이름'형태로 존재 '의 DataRow'동적 linq 쿼리에서 필드를 참조하는 방법은 무엇입니까?

IQueryable<Result> aggregate1 = 
     query1Data.Tables[0].AsEnumerable().AsQueryable() 
       .GroupBy("name", "it") 
       .Select<Result>("new(Key as Group, Sum(value)as Total)"); 

을하지만 난 그것을 알아낼 질수 . 내가 몇 포럼에 문제를 보았다 그러나 아무도 어떻게 문제를 해결받을 수있는 명확한 답을 것 같다.

답변

0

이 당신이하려고했던 무엇인가?

var aggregate1 = 
     query1Data.Tables[0].AsEnumerable().AsQueryable() 
      .GroupBy(row => row.Field<string>("name"), row => row.Field<int>("it")) 
      .Select(g => new { Group = g.Key, Total = g.Sum() }); 
0

아니에요 분명히 내가 원하는 것을 정확히 이해하고 있지만 여기에 사용할 수있는 약간의 코드 스 니펫이 있습니다. 영감 :

var dataTable = new DataTable(); 
dataTable.Columns.Add("Name", typeof(String)); 
dataTable.Columns.Add("Value", typeof(Int32)); 
dataTable.Rows.Add("A", 1); 
dataTable.Rows.Add("A", 2); 
dataTable.Rows.Add("B", 3); 
dataTable.Rows.Add("B", 4); 

var aggregate = dataTable.AsEnumerable() 
    .GroupBy(row => row.Field<String>("Name"), row => dataRow.Field<Int32>("Value")) 
    .Select(group => new { Name = group.Key, Total = group.Sum() }); 

foreach (var row in aggregate) 
    Console.WriteLine(row.Name + " = " + row.Total); 
관련 문제