2016-07-19 13 views
0

"0000000385242160714132019116002239344.ACK"のような列の値を持つリストがあります。リストにバインドするときには "239344"のようにこの値から最後の6桁。 そして私は給与項目の合計も見つける必要があります。linqを使用してリスト内の文字列値を分割する

私の質問は以下のようになります。

var result = from p in Context.A 
          join e in B on p.Id equals e.Id 
          join j in Context.C on e.CId equals j.CId 
          where (e.Date >= periodFrom && e.Date <= periodTo) 
          group new 
          { 
           e, 
           j 
          } by new 
          { 
           j.J_Id, 
           e.Date, 
           e.Es_Id, 
           e.FileName, 
           j.Name, 
           e.ACK_FileName, 
           p.EmpSalaryId, 
           p.Salary 
          } into g 
          orderby g.Key.CId, g.Key.Es_Id, g.Key.Date, g.Key.FileName 
          select new 
          { 
           CorporateId = g.Key.CId, 
           ProcessedDate = g.Key.Date, 
           EstID = g.Key.Es_Id, 
           FileName = g.Key.FileName, 
           Name = g.Key.Name, 
           ack = g.Key.ACK_FileName, 
           EmpSalaryId = g.Key.EmpSalaryId, 
           Salary=g.Key.Salary 
          }; 

var Abc=result.ToList(); 

答えて

1
var result = (from p in Context.A 
      join e in B on p.Id equals e.Id 
      join j in Context.C on e.CId equals j.CId 
      where (e.Date >= periodFrom && e.Date <= periodTo) 
      group new { e, j } by new 
      { 
       j.J_Id, 
       e.Date, 
       e.Es_Id, 
       e.FileName, 
       j.Name, 
       ACK_FileName = e.ACK_FileName.Substring(e.ACK_FileName.IndexOf(".ACK") - 7, 11), 
       p.EmpSalaryId, 
       p.Salary 
      } into g 
      orderby g.Key.CId, g.Key.Es_Id, g.Key.Date, g.Key.FileName 
      select new 
      { 
       CorporateId = g.Key.CId, 
       ProcessedDate = g.Key.Date, 
       EstID = g.Key.Es_Id, 
       FileName = g.Key.FileName, 
       Name = g.Key.Name, 
       ack = g.Key.ACK_FileName, 
       EmpSalaryId = g.Key.EmpSalaryId, 
       Salary = g.Sum(item => item.Salary) 
      }).ToList(); 
+0

部分文字列の場合のために働いてGilad.Its @ありがとうございました。しかし、合計のために、私がフィールド給与にアクセスしようとしたときに、そこにはeとjしか得られませんでした。あなたは私をソートアウトに助けてくれますか? –

+0

@SinoyDevassy - ああ申し訳ありません....あなたは 'group new {/ * here .. * /}'に追加する必要があり、 'by new'ではそれを持たないようにする必要があります。 - 意味があるの? 一般的に私はあなたのコレクションとアイテムに適切な名前を使用することをお勧めします。それは何が起こっているのかを理解することをはるかに簡単にする –

+0

うん...それは動作します。私はlinqで新しいです。提案していただきありがとうございます。:-) –

関連する問題