[英]linq More efficient way to get data from a table based on another table?
AlinaDatabaseDataContext db = new AlinaDatabaseDataContext();
public List<FaciliteitenLokaalFixed>
GetFaciliteitenVoorArchetype(ArchetypesLokaal archetype)
{
var faciliteiten = new List<FaciliteitenLokaalFixed>();
foreach(var faciliteit in db.FaciliteitenFixedPerArchetypes
.Where(f => f.Naam_archetype.Equals(archetype.Naam)))
{
faciliteiten.Add(db.FaciliteitenLokaalFixeds
.Where(f => f.Naam.Equals(faciliteit.Naam_faciliteit)).First());
}
return faciliteiten;
}
I have a table FaciliteitenFixed
, a table ArchetypesLokaal
and a table FaciliteitenFixedPerArchetype
. 我有一个表FaciliteitenFixed
,一个表ArchetypesLokaal
和一个表FaciliteitenFixedPerArchetype
。 Function gets an Archetype
as parameter, looks up all the names of FaciliteitenFixed
in the table FaciliteitenFixedPerArchetype
then gets all the FaciliteitenFixed
objects and returns them in a list. 函数获取Archetype
作为参数,在表FaciliteitenFixedPerArchetype
查找FaciliteitenFixed
所有名称,然后获取所有FaciliteitenFixed
对象并在列表中返回它们。
I've used a foreach here, and this works. 我在这里使用了foreach,这可行。 But I feel like there probably is a much simpler way to do this when working with Linq. 但是我觉得与Linq合作时,可能有一种更简单的方法来执行此操作。
You can use a subselect in a LINQ query: 您可以在LINQ查询中使用子选择:
public List<FaciliteitenLokaalFixed>
GetFaciliteitenVoorArchetype(ArchetypesLokaal archetype)
{
var faciliteitenQry =
from faciliteit in db.FaciliteitenFixedPerArchetypes
where faciliteit.Naam_archetype == archetype.Naam
let faciliteitenLokaals =
from f in db.FaciliteitenLokaalFixeds
where f.Naam == faciliteit.Naam_faciliteit
select f
select faciliteitenLokaals.First();
return faciliteitenQry.ToList();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.