使用 LINQ 搜索关系数据库
Using LINQ to search relational databases
我有以下数据库:
和以下代码:
public IActionResult Index(IssueModel searchCriteria)
{
var bloods = from m in _context.Blood
select m;
if (!string.IsNullOrEmpty(searchCriteria.SearchComponent))
{
//Blood Component
bloods = bloods.Where(s => s.Component.Contains(searchCriteria.SearchComponent));
//Blood Type : This is where I plan to search for a specific blood type.
}
return View(bloods);
}
如您所见,我很乐意在血液数据库中搜索特定成分类型。在我标记的区域中,我想搜索与特定 PlasType 或 RedBloodType 相关的血液。
有什么想法吗?谢谢!
编辑:感谢所有提供答案的人。我看过的所有答案都非常有用,不仅可以帮助我解决这个问题,还可以提高我对该主题的理解。
像这样:???
result = new List<Blood>();
foreach (var b in bloods)
{
if (_context.Donor.Where(d => d.id == b.BloodId)
.Any(d => (d.PlasType == "somethingsYouNow") || (d.RedBloodType == "somethingsYouNow"))
{
result.Add(b)
}
}
return result;
你没有像 Blood.Donors
这样的导航 属性(如果是一对多关系)?您可以通过此 属性 访问它,但您应该更早地包含它:
Blood.Include(c => c.Donors);
我只会创建简单的 sql 查询,然后将其转换为 linq 查询。
Select distinct blood.* from blood
inner join donor on blood.donorid = donor.donorid
where donor.PlasType like 'param' or RedBloodType like 'param'
现在将其转换为 linq 查询
var filteredBlood = (from b in blood
join d in donor on b.DonorId equals d.DonorId
where d.PlasType.contains("param") || d.RedBloodType.contains("param")
select b).distinct().toList();
我有以下数据库:
和以下代码:
public IActionResult Index(IssueModel searchCriteria)
{
var bloods = from m in _context.Blood
select m;
if (!string.IsNullOrEmpty(searchCriteria.SearchComponent))
{
//Blood Component
bloods = bloods.Where(s => s.Component.Contains(searchCriteria.SearchComponent));
//Blood Type : This is where I plan to search for a specific blood type.
}
return View(bloods);
}
如您所见,我很乐意在血液数据库中搜索特定成分类型。在我标记的区域中,我想搜索与特定 PlasType 或 RedBloodType 相关的血液。
有什么想法吗?谢谢!
编辑:感谢所有提供答案的人。我看过的所有答案都非常有用,不仅可以帮助我解决这个问题,还可以提高我对该主题的理解。
像这样:???
result = new List<Blood>();
foreach (var b in bloods)
{
if (_context.Donor.Where(d => d.id == b.BloodId)
.Any(d => (d.PlasType == "somethingsYouNow") || (d.RedBloodType == "somethingsYouNow"))
{
result.Add(b)
}
}
return result;
你没有像 Blood.Donors
这样的导航 属性(如果是一对多关系)?您可以通过此 属性 访问它,但您应该更早地包含它:
Blood.Include(c => c.Donors);
我只会创建简单的 sql 查询,然后将其转换为 linq 查询。
Select distinct blood.* from blood
inner join donor on blood.donorid = donor.donorid
where donor.PlasType like 'param' or RedBloodType like 'param'
现在将其转换为 linq 查询
var filteredBlood = (from b in blood
join d in donor on b.DonorId equals d.DonorId
where d.PlasType.contains("param") || d.RedBloodType.contains("param")
select b).distinct().toList();