更新LINQ中的类字段 - 是否可能?

时间:2011-07-14 08:27:31

标签: linq asp.net-mvc-2 refactoring anonymous-types

我有2个表,想要从1个表中获取记录并从另一个表“更新”其中一个字段,并在某处传递“Payment”对象的最终列表。我不能使用anonymouse类型,我需要获取正确类型对象的列表。

还有很长的路要走。

获得数据:

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 为空):

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

获得正确类型的列表:

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

有没有办法缩短代码,在查询或其他方面进行必要的字段更新?我不知道在哪里寻找。 我无法更改数据库。

1 个答案:

答案 0 :(得分: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>,因此不使用匿名类型。