我有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;
有没有办法缩短代码,在查询或其他方面进行必要的字段更新?我不知道在哪里寻找。 我无法更改数据库。
答案 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>
,因此不使用匿名类型。