尝试从MVC控制器中的对象列表中获取ID列表

时间:2019-09-17 02:25:33

标签: c# linq model-view-controller

我正在建立所有银行帐户及其对应交易的列表,以供用户根据他们所在的“家庭”查看。我可以很好地获得帐户列表,但是却很难获取交易。

var model = new DashboardViewModel();
var user = db.Users.Find(User.Identity.GetUserId());

var houseAccounts = db.BankAccounts.Where
    (b => b.HouseholdId == user.MyHouseId).ToList();

model.BankAccounts = houseAccounts;

model.Transactions = db.Transactions.Where
    (t => t.BankAccountsId == houseAccounts.Id);

houseAccounts.Id,我收到一条错误消息,指出“列表不包含'Id'的定义...”

为每个BankAccount分配一个HouseholdId,为每个交易分配一个BankAccountsId。我的数据库中的所有对象都有一个由我创建的类创建的ID号。我怎么能在这里买到它?

2 个答案:

答案 0 :(得分:0)

  

在houseAccounts.Id处,我收到一条错误消息,指出“列表不包含'Id'的定义...”

houseAccounts是BankAccounts的列表,并且List没有ID。 实际上,列表中的每个对象(在本例中为BankAccout)都有一个ID。

因此,如果您希望从houseAccounts获得ID,则可以执行以下操作:

var houseAccountIdList = houseAccounts.Select(it => it.Id);

使用ID列表,您可以像这样进行交易:

model.Transactions = db.Transactions.Where(it => houseAccountIdList.contains(it.BankAccountsId));

答案 1 :(得分:0)

类型houseAccounts是BankAccount的列表,除非引用了列表中的某个项目,否则您肯定无法从中获取属性Id。请尝试以下:

 foreach (var account in houseAccounts){
    //Retrieve and add transactions based on each individual list-item id
  model.Transactions.Add(db.Transactions.Where (t => t.BankAccountsId == account.Id));
  }