gpt4 book ai didi

c# - 使用 LINQ 进行多数据查询

转载 作者:太空宇宙 更新时间:2023-11-03 12:17:36 25 4
gpt4 key购买 nike

我有一个函数可以通过连接从我的数据库中获取数据。我想从不同的表中获取数据,我该如何实现?我想从表“motif_deplacement”中获取“libelle_motif”

我现在的功能:

    public static List<personne> getPersonne_Deplacement(int numDeplacement)
{
List<personne> desP = new List<personne>();

var query = (from Per in db.personne.ToList()
join Dep in db.deplacement_personne.ToList() on Per.num_personne equals Dep.num_personne
join Mot in db.motif_deplacement.ToList() on Dep.id_motif equals Mot.id_motif
where Dep.id_deplacement == numDeplacement
select new personne
{

nom_personne = Per.nom_personne,
num_personne = Per.num_personne,
ref_personne = Per.ref_personne,
libelle_motif = Mot.libelle_motif,
});

desP = query.ToList();
return desP;
}

这就是我的数据库的样子:

database

最佳答案

您将必须创建一个新类,该类将充当具有所需属性的模型。根据包含的关系在您的 select 中构造其中一个。

如果您在 EF 实体中为您的关系建模而不是在每个查询中编写连接语句,那么管理此查询也会容易得多。

另请注意,我删除了对 ToList 的所有调用。您之前的代码是具体化每个表中的所有实体,然后在内存中加入和过滤,这是非常低效的。

public static List<SomeModel> getPersonne_Deplacement(int numDeplacement)
{
var query = from Per in db.personne
join Dep in db.deplacement_personne on Per.num_personne equals Dep.num_personne
join Mot in db.motif_deplacement on Dep.id_motif equals Mot.id_motif
where Dep.id_deplacement == numDeplacement
select new SomeModel
{
nom_personne = Per.nom_personne,
num_personne = Per.num_personne,
ref_personne = Per.ref_personne,
libelle_motif = Mot.libelle_motif,
};
return query.ToList();
}

SomeModel.cs

public class SomeModel 
{
public string nom_personne {get;set;}
public string num_personne {get;set;}
public string ref_personne {get;set;}
public string libelle_motif {get;set;}
// add additional properties as needed
}

关于c# - 使用 LINQ 进行多数据查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49033608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com