如何从具有相同外键值的表中获取多行

本文关键字:获取 键值 | 更新日期: 2023-09-27 18:34:40

我有一个名为驱动程序的表,如下所示:

ID    QuoteID   Name   Amount
1     1         jim    100
2     1         bob    200

可能是有 1 行或多行具有不同的 PK (ID(,但具有相同的外键 (QuoteID(。 无论哪种情况,我都想抓住所有具有给定 QuoteID 的人,并能够操纵每个人的"金额"下的值。

我正在使用 Razor 在 MVC 4 中工作。 这是我到目前为止在控制器中拥有的内容:

long quoteID = model.Driver.QuoteID.Value;
var driversModel = db.Drivers.Single(g => g.QuoteID == quoteID);
//amt1 should be for jim and amt2 should be for bob
double amt1 = driversModel.Amount * 1.04;
double amt2 = driversModel.Amount * 1.05;
double total = amt1 + amt2;

有人可以把我推到正确的方向吗? 我应该使用其他东西吗?单身"让我获得这些金额?

如何从具有相同外键值的表中获取多行

Single(( 得到一行。使用 Where() 获取满足查询的所有行。

IEnumerable<Drivers> driversModel = db.Drivers.Where(g => g.QuoteID == quoteID);
// SingleOrDefault - default value if that element is not found.
Driver jim = driversModel.SingleOrDefault(x => x.Name == "jim");
Driver bob = driversModel.SingleOrDefault(x => x.Name == "bob");
double jimsAmount = jim.Amount ?? 0;
double bobsAmount = jim.Amount ?? 0;
double amt1 = jimsAmount * 1.04;
double amt2 = bobsAmount * 1.05;
double total = amt1 + amt2;
// Project to a list of doubles.
List<double> amounts = driversModel.Select(x => x.Amount);
// Sum amount property on Driver.
double sum = driversModel.Sum(x => x.Amount);

var driversModel = db.Drivers.Where( d => d.QuoteID == quoteID ) 返回具有指定quoteID的所有驱动程序记录

然后,您需要在获得金额乘数的地方加入,乘以.AmountSUM结果。