我正在使用asp.net mvc,我正在拨打休息服务并在列表中收到4张收据(下图中的Se图片)。 问题是我想将我拥有的结果列表转换为响应结果,但仍然有列表中的4个项目。 将响应返回到我的观看次序而不是列表中包含 4 项目时,我只在列表中 1 存储, 1 收据。
我的Linq查询有什么问题?我几乎到处都添加了 .ToList()。
提前致谢。
asp.net
我有一个类如下的模型
public class ReceiptsViewModel
{
public List<RestAPI.Store> Stores { get; set; }
public List<RestAPI.POSProvider> Providers { get; set; }
public List<RestAPI.Receipt> Receipts { get; set; }
public List<RestAPI.StoreChain> StoreChains { get; set; }
}
[HttpGet]
public ActionResult Receipts()
{
Guid userId = Guid.Parse(CookieHelper.GetCookieValue("UserId"));
var result = ReceiptService.GetReceiptsByUserId(userId);
var response = (from r in result.Receipts
select new Eflag.Receipt.Web.Mvc.Areas.Dashboard.Models.User.ReceiptsViewModel()
{
Receipts = new List<Models.RestAPI.Receipt>()
{
new Models.RestAPI.Receipt()
{
ReceiptUniqueId = r.ReceiptUniqueId,
ReceiptId = r.ReceiptId,
CashierId = r.CashierId,
CashierName = r.CashierName,
ReceiptDateTime = r.ReceiptDateTime,
POSPlace = r.POSPlace,
Total = r.Total,
TotalTax = r.TotalTax,
TotalNet = r.TotalNet,
TotalDiscount = r.TotalDiscount,
Rounding = r.Rounding,
ItemAmount = r.ItemAmount,
Currency = r.Currency,
CurrencyCode = r.CurrencyCode,
MembershipCardUsed = r.MembershipCardUsed,
MembershipCardId = r.MembershipCardId,
Revoked = r.Revoked,
CardCompany = r.CardCompany,
FreeText = r.FreeText,
Items = (from i in r.Items
select new Item()
{
ItemUniqueId = i.ItemUniqueId,
ItemId = i.ItemId,
Ean = i.Ean,
Name = i.Name,
CurrentPrice = i.CurrentPrice,
RegularPrice = i.RegularPrice,
Color = i.Color,
ItemRowCount = i.ItemRowCount,
ItemOrder = i.ItemOrder,
TotalGrossAmount = i.TotalGrossAmount,
TotalNetAmount = i.TotalNetAmount,
Removed = i.Removed
}).ToList()
}
}.ToList(),
Stores = new List<Store>()
{
new Store()
{
StoreUniqueId = r.Store.StoreUniqueId,
StoreId = r.Store.StoreId,
Name = r.Store.Name,
CorporateId = r.Store.CorporateId,
Adress = r.Store.Adress,
PostalCode = r.Store.PostalCode,
Phone = r.Store.Phone,
Email = r.Store.Email,
Status = r.Store.Status
}
}.ToList(),
Providers = new List<POSProvider>()
{
new POSProvider()
{
POSProviderUniqueId = r.POSProvider.POSProviderUniqueId,
Name = r.POSProvider.Name,
CorporateId = r.POSProvider.CorporateId,
Adress = r.POSProvider.Adress,
PostalCode = r.POSProvider.PostalCode,
Phone = r.POSProvider.Phone,
ContactPerson = r.POSProvider.ContactPerson,
Email = r.POSProvider.Email,
Status = r.POSProvider.Status
}
}.ToList(),
StoreChains = new List<StoreChain>()
{
new StoreChain()
{
StoreChainUniqueId = r.StoreChain.StoreChainUniqueId,
Name = r.StoreChain.Name,
StoreChainId = r.StoreChain.StoreChainId,
Status = r.StoreChain.Status
}
}.ToList()
});
return View(response);
}
答案 0 :(得分:1)
问题是您正在创建一个ReceiptsViewModel
列表,而不是一个包含多个收据的单个列表。
将代码更改为:
var response = new Eflag.Receipt.Web.Mvc.Areas.Dashboard.Models.User.ReceiptsViewModel
{
Receipts = result.Receipts,
Stores = result.Receipts.Stores,
//rest of code snipped
}
答案 1 :(得分:0)
尝试使用List集合的ConvertAll方法。文档here。
示例:
var response = result.Receipts.ToList().ConvertAll(x=> new Eflag.Receipt.Web.Mvc.Areas.Dashboard.Models.User.ReceiptsViewModel() {
//do your convertations here
});