我有三张这样的table:表A表B表C
MID | Name MID| someNumber MID| Price
----| ----- ------| ----- ---- | -----
001 | Iphone 001 | 02389 001 | 434
001 | Iphone X8 001 | 02389 001 | 34434
003 | Iphone ns 003 | 43533 003 | 343
003 | Tissue 003 | 23123 003 | 234
006 | Bottle 006 | 43453 006 | 454
在应用程序中,有两个搜索字段:搜索编号和另一个称为搜索名称的字段
当用户点击submit时,我想对这些表进行查询并显示如下输出:如果数字匹配,我希望显示所有表中与搜索到的数字匹配的所有记录,但不是以列表的形式,而是以显示记录总数的合并记录(一行中的单个记录)的形式。
例如,如果您搜索02389,则在tableB中有两条记录001,因此我希望输出:
Number | Name | Price | TotalRecords
------------------------------------
02389 |Iphone|434 | 2
单击此记录时,它将展开以显示每一行的记录总数,如下所示:
Number | Name | Price |
-----------------------
02389 |Iphone|434 |
02389 |Samsung|34434 |
当您搜索“name”时,它将进行模糊搜索,以显示与该名称匹配的所有记录,但将基于合并的“someNumber”显示数据。例如,如果您搜索“iPhone”,则会有三条记录包含单词iPhone,因此输出如下所示:
Number | Name | Price | TotalRecords
------------------------------------
02389 |Iphone |434 | 2
43533 |Iphone ns|434 | 1
我现在的问题是,考虑到视图只接受一个模型,我已经使用了视图模型,但是我如何使模型保存单个匹配记录,以及另一个保存列表并相应地在同一视图中显示呢?我的代码快照是这样的
var userEnterSearchValue = from x in _db.tableB select x;
userEnterSearchValue = userEnterSearchValue.AsNoTracking().Where(x =>
x.Name.Contains(model.NameSearch) || x.Number.Contains(model.NumberSearch));
var resultsFromDb = userEnterSearchValue.OrderBy(x => x.Name).ToList(); //this holds
matching search values from db
foreach (var i in resultsFromDb)
{
var MID= i.MID;
var getPrice = _db.TABLEC.Where(a => a.MID==
MID).FirstOrDefault().Price; //this is how how I get the price
//How do I search to add up all the prices that match a particular number for example
get all prices in table C matching the number '02389' (in TABLE B)?
}
ViewModel vm = new ViewModel
{
ListOfRecords = resultsFromDb = resultsFromDb.OrderBy(x =>
x.SomeNumber).ToList(),
//I need now to find a way to get a single record that match multiple numbers or name?
//I have started it off like this
ConsolidatedRecord= resultsFromDb = resultsFromDb.GroupBy(x =>
x.SomeNumber).Select(a=>a.First()).ToList(),
};
return View(vm)
我只需要进行正确的链接查询,将这些数据连接在一起,这样它就可以显示为多个列表,也可以显示为同一视图中具有统一匹配编号的单个列表)希望这有意义吗?有帮助吗?
1条答案
按热度按时间xbp102n01#
You might consider consolidating the data sets to present the data as a single table from the start then use something like datatables.jquery to filter. This should accomplish what you ask.