2011-12-05 4 views
0

私は多くの企業があります。企業の中には主題があり、他はそうしていないものもあります。すべての企業には、変更日付と変更者があります。このような何か:LINQのグループステートメントでサマリーデータ以外のデータを渡すにはどうすればよいですか?

CompanyID Subjects Modified  Modified By 
1   2  Jan 1, 2011 Jon 
2   4  Jan 1, 2010 Dave 
3   1  Jan 1, 2009 Alan 
4   0  Jan 1, 2008 Tom 

ここの人々から多くの援助では、私は私が必要な情報を与えたLINQレポートを作成したが、それは更新日時を示さなかったと誰が会社のレコードを変更し

var abc = from c in companies 
      join s in subjects on "0000" + c.RowKey equals s.PartitionKey into outer 
      from s in outer.DefaultIfEmpty() 
      select new 
      { 
       Title = c.Title, 
       Subject = ((s == null) ? 0 : 1) 
       //, Modified = c.Modified, 
       // ModifiedBy = c.ModifiedBy 
      } into split 
      group split by split.Title into g 
      select new CompanySummary 
      { 
       Title = g.Key, 
       Subjects = g.Sum(s => s.Subject) 
       // ,Modified = g.Modified, 
       // ModifiedBy = g.ModifiedBy 
      }; 

私はコードを追加して(コメントアウトして)、会社の変更内容をお知らせしました。しかし、それは私にエラーを言った:

Error 1 'System.Linq.IGrouping<string,AnonymousType#1>' does not contain a definition for 'Modified' and no extension method 'Modified' accepting a first argument of type 'System.Linq.IGrouping<string,AnonymousType#1>' 

私は間違って何を考えている人は誰ですか?私のコードは95%働いていますが、結果に変更された詳細をどのように渡すかわからないだけです

答えて

3

gはオブジェクトのセットです。
セット自体には、明らかに共通鍵以外のプロパティはありません。

各グループ内の特定のオブジェクト(たとえば、g.Last())からプロパティを取得する必要があります。

+0

ハロースラーク。ありがとう、今私は理解する。あなたが気にしないなら、私がこれに使うことができる構文を教えてください。私は追加しようとしました:Modified = g.Last(Modified)、 ModifiedBy = g.Last(ModifiedBy)しかし、これは動作しませんでした。 –

+0

'ModifiedBy = g.Last()。ModifiedBy' – SLaks

+0

このトリックはありましたが、今はエラーが発生しました:エラー1暗黙のうちに 'string'を 'System.DateTime'に変換できません。私の会社ではこれを公開DateTimeに設定していますか? ModifiedBy {get;セット; } –

関連する問題