在ASP.NET中使用Lambda进行主/细节下拉过滤

时间:2019-07-08 09:49:47

标签: c# asp.net asp.net-mvc

我想根据上一个字段中的选择填充一个下拉列表。

目前,我的ViewModel中有2个列表,如下所示:

Manufacturers = context.ManufacturersTable.OrderBy(x => x.ManufacturerName).ToList(),
Models = context.ModelsTable.OrderBy(x => x.ModelName).ToList(),

两个列表都使用带有自己数据模型的SQL表填充。

Models表中,有一个ManufacturerID列,与ManufacturerID表中Manufacturers的列匹配。

我想根据对Models列表的选择来填充Manufacturers列表,以便仅显示与所选制造商关联的模型。

我该如何使用Lambda来做到这一点?

我一直在玩“哪里”和“选择”,但还不太能够到达那里。

编辑:

这是桌子

MANUFACTURER   |   MANUFACTURER_ID
Manufacturer 1     GUID1
Manufacturer 2     GUID2

MODEL   |    MODEL_ID    |    MANUFACTURER_ID
Model 1 | GUID1          |    GUID1
Model 2 | GUID2          |    GUID2
Model 3 | GUID3          |    GUID1
Model 4 | GUID4          |    GUID1

2 个答案:

答案 0 :(得分:1)

更改制造商字段的选择时,请调用一个带有制造商ID作为返回以下参数的控制器方法:

context.ModelsTable
    .Where(x => x.ManufacturerId == manufacturerId)
    .OrderBy(x => x.ModelName)
    .ToList();

...然后用结果更新选择列表。

答案 1 :(得分:0)

context.ModelsTable.Where(x => x.ManufacturerId == value).OrderBy(x => x.ModelName).ToList()

这行不通吗?将ManufactureId传递为valueWhere关键字过滤数据,但返回表中的所有列。使用Select,您可以选择要返回的列。您可以一起使用这些关键字。