c# - 如何根据另一个表的另一行中的条件选择表中的一行?
问题描述
我只想显示一个表中满足另一个表中特定条件的行。上的示例controller
:
using(inventarioEntitiesDBA dc = new inventarioEntitiesDBA())
{
ProductandBodViewModel finalitem = new ProductandBodViewModel();
var m_List = dc.showcase.Where(x => x.prod_on_showcase > 0).ToList();
}
使用上面的代码,可以只显示满足条件的项目,prod_on_showcase > 0
. 这ProductandBodViewModel
是我创建的模型,用于在同一视图上显示两个模型。
ProductandBodViewModel
型号:
public class ProductandBodViewModel
{
public List<inventory> inventory { get; set; }
public List<showcase> showcase { get; set; }
}
根据这个条件 ( prod_on_showcase > 0
) 我想显示与表格相关的其他信息showcase
。
showcase
桌子型号:
public class showcaseViewModel
{
public int id_inventory { get; set; }
public int prod_on_showcase { get; set; }
}
inventory
桌子型号:
public partial class inventory
{
public int id_inventory { get; set; }
public Nullable<int> prod_on_inventory { get; set; }
public string prod_code { get; set; }
}
表之间的关系是id_inventory
字段。
在这种情况下,showcase
表格显示的项目是 3,因此inventory
表格也必须显示 3 个项目。使用下面的代码可以显示showcase
满足条件的表的信息,但使用另一个表 ( inventory
) 仅显示根据条件找到的第一个元素prod_on_showcase > 0
。
using(inventarioEntitiesDBA dc = new inventarioEntitiesDBA())
{
ProductandBodViewModel finalitem = new ProductandBodViewModel();
var m_List = dc.showcase.Where(x => x.prod_on_showcase > 0).ToList();
var m_Each = dc.showcase.Where(e => e.prod_on_showcase > 0).Count();
for(int i = 0; i < m_Each; i++)
{
var prodEach = dc.inventory.Where(x => x.prod_on_showcase > 0).FirstOrDefault();
var b = dc.inventory.Where(a => a.id_inventory == prodEach.id_inventory).ToList();
finalitem.bod = b;
}
finalitem.showcase = m_List;
return View(finalitem);
}
解决方案
您要求var prodEach = dc.inventory.Where(x => x.prod_on_showcase > 0).FirstOrDefault();
始终返回数组中的第一个(或默认)元素。
Linq'sSelectMany
对于您正在尝试做的事情很有用。
using(inventarioEntitiesDBA dc = new inventarioEntitiesDBA())
{
ProductandBodViewModel finalitem = new ProductandBodViewModel();
var m_List = dc.showcase.Where(x => x. > 0).ToList();
var m_List = showcase.Where(x => x.prod_on_showcase > 0).ToList();
finalitem.showcase = m_List.SelectMany(prodEach
=> dc.inventory.Where(a => a.id_inventory == prodEach.id_inventory)
finalitem.showcase = m_List;
return View(finalitem);
}```
推荐阅读
- spring-boot - SpringBoot 1.5:@SpringBootTest 和内存数据库
- angularjs - angularJS - 在 div 标签内加载网页
- python - 在双索引Groupby Dataframe中查找具有最小值的内部索引
- python - 如何从python中的元组中正确读取字符串?
- javascript - Angular Google Maps 组件 TypeError:无法读取未定义的属性“nativeElement”
- python - 如何使用 python open cv 计算图像中红色像素的数量?
- javascript - 获取未捕获的类型错误:*** 不是最近几天的函数
- c++ - '[' 标记 C++ 错误之前的非限定 ID
- mysql - MySql:如何选择所有值都相同的行?
- c# - 通过 url 调用 Web 服务