2011-11-30 3 views
0

내 데이터베이스 SQLServer에서 연관 테이블 IDKIDamount이 있습니다. 모든 ID의 값을 요약하고 싶습니다. 즉, KID 6, KID 10 등의 금액을 갖고 싶다는 의미입니다.데이터베이스의 Sum X 값

내 문제는 하나의 KID에 많은 값이있을 수 있기 때문에 이것을 수행하는 방법을 모른다는 것입니다. 약 100 KIDs.

나는 C#에서 그 모든 것을하고 싶다. 가장 좋은 방법은 무엇입니까? 그리고 가장 좋은 방법은 무엇입니까? 배열, 목록?

편집 : 나는 내 응용 프로그램의 값을 필요로하기 때문에하는 SqlCommand와 C#으로 그것을 할 필요가

!

편집 2 : 나는 어떤 엔티티-개체가하지는 때문에

LINQ 가능한 밤은 SQL합니다. SQLReader 또는 이와 비슷한 기능을 사용하고 싶습니다. 그게 가능하니?

+0

SQL에서이 작업을 수행했다면 매우 쉽습니다. 그러나 C# 응답을 원할 경우 어떻게 도와 줄지 잘 모르겠습니다. 이 솔루션은 LINQ에서 쉽게 할 수 있지만 솔루션을 게시하기에 충분한 LINQ를 알지 못합니다. – FrustratedWithFormsDesigner

+0

C#에서 사용하는 데이터베이스 추상화는 무엇입니까? LINQ를 사용할 수 있습니까? – Kekoa

답변

2

. 가장 좋은 방법은 무엇입니까?

가장 좋은 방법은 매우 정직이 SQL을 사용하는 SQL 리더를 사용하여이

SELECT 
     Kid, 
     SUM(AMOUNT) Sum_of_amount 
    FROM 
     table 
    GROUP BY 
     Kid 

같은 SQL 식에 사용하는 것입니다. 다음은 독자의 값을 익명 형식으로 구성된 목록으로 투영하는 예제입니다. 나를 익명으로하고 싶지 않으면 자신의 타입을 정의하고 대신 사용할 수 있습니다. LINQ 식 대신에 for 루프를 사용할 수도 있습니다.

using (SqlConnection cn = new SqlConnection ("ConnectionString")) 
     using (SqlCommand cmd = new SqlCommand (@" 
       SELECT 
        Kid, 
        SUM(AMOUNT) Sum_of_amount 
       FROM 
        table 
       GROUP BY 
        Kid", cn)) 

     { 
      cn.Open(); 
      using (SqlDataReader dr = cmd.ExecuteReader()) 
      { 
      var list = (from r in dr.Cast<DbDataRecord>() 
         select new {Id= r.GetInt32(0), SumOfAmount = r.GetInt32(1) }).ToList(); 
      } 

     } 

Table<Kids> kids = db.GetKids(); 
var kidsSum = 
     (from k in kids 
     group p by p.Id into g 
     select new {ID = g.Key, SumOfAmount = g.Sum(p => p.Amount) }).ToList(); 

처럼을 위해 꽤 정직을 LINQ to SQL은 같은 것을 사용하고 그리고에 저장하는 가장 좋은 방법은 어떤 경우? 배열, 목록?

"최선의"방법은 없지만 직접 조작 된 배열에는 문제가 있습니다. 선택한 일반 컬렉션을 사용하는 것이 좋습니다.

많은 사람들이 그들을 좋아하지 않지만 입력 된 데이터 세트는 유효한 선택입니다.

0
SELECT KID, SUM(amount) as 'Total' 
FROM Table 
GROUP BY KID 

SQL에서는 3 줄의 쿼리입니다.

+0

Linq에서 얼마나 쉽게 쿼리를 다시 작성할 수 있습니까? – FrustratedWithFormsDesigner

+0

답변 해 주셔서 감사합니다!내 응용 프로그램에 값이 필요하기 때문에 C#에서 SQLCommand를 사용하여 모든 작업을 수행해야합니다! – user896692

+1

@ user896692 : 왜 'SQLCommand' 개체를 만들고 명령 텍스트를' "SELECT KID, SUM (amount) ''Total 'from GROUP BY KID"'로 설정할 수 없습니까? http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtext.aspx – FrustratedWithFormsDesigner

0

을 수행하는 SQL 방법은 : 나는 C#으로 그 모든 일을 할

Select ID, sum(amount) from table group by ID