linq에서 datatables에 가입하려고합니다. 이제 어떻게 linq 쿼리에 의해 그룹화 할 수 있습니다. 나는 지금까지 무엇을 시도했다.linq의 그룹 by 절? linq에 테이블에 가입 하시겠습니까?
var resultstatu = from table1 in dtFetch.AsEnumerable()
join table2 in dssap.AsEnumerable() on (string)table1["SAPQuotationNo"] equals (string)table2["Quationno"]
select new {
EMDNo = (int)table1["EMDNo"],
Quationno = (string)table2["Quationno"],
CustomerCode = (string)table2["CustomerCode"],
InvoiceQuantity = (string)table2["InvoiceQuantity"],
InvoiceValue = (string)table2["InvoiceValue"]
};
이제 위의 linq에 대한 그룹을 작성하고 싶습니다.
var resultstatu = from table1 in dtFetch.AsEnumerable()
join table2 in dssap.AsEnumerable() on (string)table1["SAPQuotationNo"] equals (string)table2["Quationno"]
group new { table1, table2 } by
new
{
Quationno = table2.Field<string>("Quationno"),
MaterialCode = table2.Field<string>("MaterialCode"),
EMDNo = table1.Field<int>("EMDNo"),
QuotationDate= table2.Field <string>("QuotationDate"),
QuotionQuantity = table2.Field<string>("QuotionQuantity"),
InvoiceQuantity = table2.Field<string>("InvoiceQuantity"),
InvoiceValue = table2.Field<string>("InvoiceValue"),
MaterialName = table2.Field<string>("MaterialName"),
}
into sasi
select new {
EMDNo = sasi.Key .EMDNo ,
Quationno= sasi.Key.Quationno ,
QuotationDate=sasi.Key.QuotationDate ,
MaterialCode= sasi.Key.MaterialCode ,
QuotionQuantity=sasi.Key.QuotionQuantity ,
MaterialName=sasi .Key.MaterialName,
InvoiceQuantity = Convert.ToString(sasi.Sum(x => x.table2.Field<decimal>("InvoiceQuantity"))),
InvoiceValue = Convert.ToString(sasi.Sum(x => x.table2.Field<decimal>("InvoiceValue")))
//InvoiceQuantity = sasi.Key.InvoiceQuantity,
//InvoiceValue = sasi.Key.InvoiceValue
};
:
EMDNO QuationNo CustomerCode InvoiceQuantity Invoicevalue
----- --------- ------------ -------------- -----------
1234 16001 H152 40.00 9000
는이 같은 시도 : 나는 위의 결과처럼되고 싶어
EMDNO QuationNo CustomerCode InvoiceQuantity Invoicevalue
----- --------- ------------ ------------- -------------
1234 16001 H152 20.00 450
1234 16001 H152 20.00 450
: 내가 좋아하는 데이터를 얻고 위의 LINQ에서 나에게
도움 위의 linq 쿼리는 예외를 발생시키고 있습니다. 지정된 캐스트에 문제가있다.
var resultstatu = from table1 in dtFetch.AsEnumerable()
join table2 in dssap.AsEnumerable() on (string)table1["SAPQuotationNo"] equals (string)table2["Quationno"]
group new { table1, table2 } by
new
{
Quationno = table2.Field<string>("Quationno"),
MaterialCode = table2.Field<string>("MaterialCode"),
EMDNo = table1.Field<int>("EMDNo"),
QuotationDate = table2.Field<string>("QuotationDate"),
QuotionQuantity = table2.Field<string>("QuotionQuantity"),
InvoiceQuantity = table2.Field<string>("InvoiceQuantity"),
InvoiceValue = table2.Field<string>("InvoiceValue"),
MaterialName = table2.Field<string>("MaterialName"),
}
into sasi
select new {
EMDNo = sasi.Key .EMDNo ,
Quationno= sasi.Key.Quationno ,
QuotationDate=sasi.Key.QuotationDate ,
MaterialCode= sasi.Key.MaterialCode ,
QuotionQuantity=sasi.Key.QuotionQuantity ,
MaterialName=sasi .Key.MaterialName,
InvoiceQuantity = sasi.Sum((r) => decimal.Parse(r.table2.Field<string>("InvoiceQuantity"))).ToString(),
InvoiceValue = sasi.Sum((r) => decimal.Parse(r.table2.Field<string>("InvoiceValue"))).ToString() }
;
그러나이 그룹에서 "invoicequantity, invoicevalue"을 고려하고 위의 쿼리에서 :
는 내가 LINQ 아래처럼 시도했다. "InvoiceQuanity"가 같으면 합계가 아닌 합계가됩니다. 같은 invoicevalue 만약 invoicevalue가 450과 같으면 합계가 다른 것이 합계입니다
아 l LINQ에서 어떤 연구를 그룹화 했습니까? "group by linq msdn"에 대한 검색 결과가 많습니다 ... –
예 존 스킵,하지만 열보다 많은 그룹을 원합니다. 시도 : group2.Field ("Quationno")에 의해 그룹 new {table1, table2} sasi에. 하지만 난 Emdno, customercode 같은 하나 이상의 fild 싶어요 –
스택 오버플로에서 "다중 열 linq에 의해 그룹"에 대한 검색 및 당신은 안타의 * lots *를 얻을거야 ... –