C# 使用LINQ搜索关系数据库
我有以下数据库: 以及以下代码:C# 使用LINQ搜索关系数据库,c#,sql,asp.net-mvc,linq,relational-database,C#,Sql,Asp.net Mvc,Linq,Relational Database,我有以下数据库: 以及以下代码: public IActionResult Index(IssueModel searchCriteria) { var bloods = from m in _context.Blood select m; if (!string.IsNullOrEmpty(searchCriteria.SearchComponent)) { //Blood Component bloo
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);
}
如你所见,我很乐意在血液数据库中搜索某种成分类型。在我标记的区域中,我想搜索与某个塑料型或红血型相关的血液
有什么想法吗?谢谢
编辑:感谢所有提供答案的人。我看到的所有答案都非常有用,不仅有助于我破解这个问题,而且提高了我对这个主题的理解。像这样:
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;
result=newlist();
foreach(血液中的b型病毒)
{
if(_context.Donor.Where(d=>d.id==b.BloodId)
.Any(d=>(d.PlasType==“somethingsYouNow”)| |(d.RedBloodType==“somethingsYouNow”))
{
结果.加入(b)
}
}
返回结果;
像这样:
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;
result=newlist();
foreach(血液中的b型病毒)
{
if(_context.Donor.Where(d=>d.id==b.BloodId)
.Any(d=>(d.PlasType==“somethingsYouNow”)| |(d.RedBloodType==“somethingsYouNow”))
{
结果.加入(b)
}
}
返回结果;
您是否具有类似于Blood.sensors
的导航属性(如果是一对多关系)?您可以通过此属性访问该属性,但在此之前,您应该包括:
Blood.Include(c => c.Donors);
您是否具有类似于
Blood.sensors
(如果是一对多关系)的导航属性?您可以通过此属性访问它,但之前您应该包括:
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();
我只需要创建简单的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();
你的
return
语句忽略了bloods
这一事实毫无帮助……但是,你还没有真正提出问题。你到底想问什么?你可以继续你的查询。给定blood.DonorId
,你可以找到与你的血浆类型和红血型匹配的捐赠者e
条件。然后,返回查询结果,而不是原始的\u context.Blood.List
您的return
语句忽略Blood
这一事实是没有帮助的……但是,您还没有真正提出问题。您到底坚持什么?您可以继续查询。考虑到Blood.DonorId
,您可以找到符合您的PlasmaType
和RedBloodType
标准的捐献者
。然后,返回查询结果,而不是原始的\u context.Blood.List