C# 获取多个列表并将其显示到视图

C# 获取多个列表并将其显示到视图,c#,sql-server,asp.net-mvc,list,linq,C#,Sql Server,Asp.net Mvc,List,Linq,我有一个系统,在其中输入其他、员工和经销商信息(有更多字段,但尽量保持简单) 我正在尝试在我的网站上实现更新功能。当我基于ItemId进行DB调用以获取所有内容时 以下是来自helper类的代码: public class Item { public static List<ItemOption> GetItemOpttions(long itemID) { using (DBContext context = new DBContext()) {

我有一个系统,在其中输入其他、员工和经销商信息(有更多字段,但尽量保持简单)

我正在尝试在我的网站上实现更新功能。当我基于ItemId进行DB调用以获取所有内容时

以下是来自helper类的代码:

public class Item { 
 public static List<ItemOption> GetItemOpttions(long itemID)
 {           
  using (DBContext context = new DBContext())
  {
    List<ItemOptionDTO> ItemOptionsDto = (
        from I in context.ItemOptions
        where I.ItemID == itemID
        select new ItemOptionDTO
        {
            ItemID = I.ItemID,
            MemberTypeId = I.MemberTypeId
            MemberType = I.MemberType,
            Price = I.Price, 
                                                        
        }).ToList();           

    return ItemOptionsDto;
  }
 }
}
public ActionResult UpdateItem(long itemID) {
 List<ItemOptionDTO> itemOptionDto = Item.GetItemOpttions(itemID);

  var other = itemOptionDto.Where(x => x.MemberTypeId == 1).FirstOrDefault();
  var employee = itemOptionDto.Where(x => x.MemberTypeId == 2).FirstOrDefault();
  var dealer = itemOptionDto.Where(x => x.MemberTypeId == 3).FirstOrDefault();

  UpdateItemViewModel viewModel = new UpdateItemViewModel(itemID, employee, dealer, option)
   {
    ItemId = option.ItemId, 
    MemberType = option.MemberType, 
    Price = other.price

    ItemId = employee.ItemId, 
    MemberType = employee.MemberType, 
    Price = employee.price

    ItemId = dealer.ItemId, 
    MemberType = dealer.MemberType, 
    Price = dealer.price
   };

    return View(viewModel);
}
公共类项{
公共静态列表GetItemOpttions(长itemID)
{           
使用(DBContext context=new DBContext())
{
列表项选项DTO=(
来自context.ItemOptions中的I
其中I.ItemID==ItemID
选择new ItemOptionTo
{
ItemID=I.ItemID,
MemberTypeId=I.MemberTypeId
MemberType=I.MemberType,
价格,价格,
}).ToList();
返回ItemOptionsDto;
}
}
}
因此,当我获取数据并将其存储在列表中时。它可以是一行数据,也可以是两行数据,具体取决于数据的保存方式。选项“其他”将始终作为一行数据保存到DB中,其中“员工和经销商”将保存为共享相同ItemId的两个单独的行。调用时,行数将根据在较早日期/时间创建的每个项目而变化

我正在尝试将此信息返回控制器,并将其发送到显示可能更新的正确值的视图。这是我在控制器里的东西。我不确定这是正确的方法还是有更好的方法

还要补充的是,如果项目保存为员工和经销商,则另一个列表将保留为空/空。我不认为我可以这样做,因为它将导致一个空异常错误

这是我目前在控制器中所拥有的:

public class Item { 
 public static List<ItemOption> GetItemOpttions(long itemID)
 {           
  using (DBContext context = new DBContext())
  {
    List<ItemOptionDTO> ItemOptionsDto = (
        from I in context.ItemOptions
        where I.ItemID == itemID
        select new ItemOptionDTO
        {
            ItemID = I.ItemID,
            MemberTypeId = I.MemberTypeId
            MemberType = I.MemberType,
            Price = I.Price, 
                                                        
        }).ToList();           

    return ItemOptionsDto;
  }
 }
}
public ActionResult UpdateItem(long itemID) {
 List<ItemOptionDTO> itemOptionDto = Item.GetItemOpttions(itemID);

  var other = itemOptionDto.Where(x => x.MemberTypeId == 1).FirstOrDefault();
  var employee = itemOptionDto.Where(x => x.MemberTypeId == 2).FirstOrDefault();
  var dealer = itemOptionDto.Where(x => x.MemberTypeId == 3).FirstOrDefault();

  UpdateItemViewModel viewModel = new UpdateItemViewModel(itemID, employee, dealer, option)
   {
    ItemId = option.ItemId, 
    MemberType = option.MemberType, 
    Price = other.price

    ItemId = employee.ItemId, 
    MemberType = employee.MemberType, 
    Price = employee.price

    ItemId = dealer.ItemId, 
    MemberType = dealer.MemberType, 
    Price = dealer.price
   };

    return View(viewModel);
}
public ActionResult UpdateItem(长项目ID){
List itemOptionDto=Item.getitemoptions(itemID);
var other=itemOptionDto.Where(x=>x.MemberTypeId==1.FirstOrDefault();
var employee=itemOptionDto.Where(x=>x.MemberTypeId==2.FirstOrDefault();
var dealer=itemOptionDto.Where(x=>x.MemberTypeId==3.FirstOrDefault();
UpdateItemViewModel viewModel=新的UpdateItemViewModel(项目ID、员工、经销商、选项)
{
ItemId=option.ItemId,
MemberType=option.MemberType,
价格=其他价格
ItemId=employee.ItemId,
MemberType=employee.MemberType,
价格=雇员价格
ItemId=经销商。ItemId,
MemberType=经销商。MemberType,
价格=经销商价格
};
返回视图(viewModel);
}

如果还有什么我可以提供的,请告诉我。

在我看来,viewModel的代码将无法编译。我不明白你在那里做什么。一个只接受需要更新的项目ID的方法怎么可能希望更新该项目的任何信息?当然,它也需要采取新的价值观?