2011-07-14 15 views
0

私は2つのテーブルを持っており、1つのテーブルからレコードを取得し、別のテーブルからそのフィールドの1つを「更新」し、どこかの「支払」オブジェクトの最終リストを渡したいとします。私は匿名のタイプを使用することはできません、私は適切な型付きオブジェクトのリストを取得する必要があります。LINQのクラスフィールドを更新できますか?

長い道のりがありました。正しいタイプと

foreach (var obj in objList) 
{ 
    obj.Payment.RecordTypeName = obj.RecordType.Name; 
} 

ガットリスト:

ガットデータ:

var paymentsToShow = from p in paymentsRepository.Payments 
        join r in recordTypeRepository.RecordType 
         on p.RecordType equals r.Reference into p_r 
        where p.Customer == CustomerRef 
        from r in p_r.DefaultIfEmpty() 
        select new 
        { 
         Payment = p, 
         RecordType = r 
        }; 
var objList = paymentsToShow.ToList(); 

変更に必要なフィールドが(基本的には、Payment.RecordTypeNameが空である)

var paymentsList = from o in objList 
        select o.Payment; 

されていますコードを短くして、必要なフィールド更新をクエリまたは何か他の?私はどこを探すべきか分からない。 データベースを変更できません。

+0

http://stackoverflow.com/questions/5165410/update-multiple-elements-at-once-linq/5165474#comment-5801169 – Manatherin

+0

匿名タイプは使用できませんが、それらを既に使用しています... –

+0

@ダニエル、最後に私は** paymentsList **を得ました。これは匿名ではありません。それを別の関数に渡します。私は匿名で渡すことはできません。 – Vasilij

答えて

0

あなたはこのようにそれを行うことができます:

var paymentsToShow = (from p in paymentsRepository.Payments 
         join r in recordTypeRepository.RecordType 
          on p.RecordType equals r.Reference into p_r 
         where p.Customer == CustomerRef 
         from r in p_r.DefaultIfEmpty() 
         select new 
         { 
          Payment = p, 
          RecordType = r 
         }).Select(x => 
           { 
            x.Payment.RecordTypeName = x.RecordType.Name; 
            return x.Payment; 
           }); 

これはIEnumerable<Payment>、その使用がない匿名型になります。

関連する問題