调用并返回两个相同型号的List
本文关键字:同型 List 两个 返回 调用 | 更新日期: 2023-09-27 18:29:32
嗨,我正在mvc4中使用sql和c#进行我的项目。
我在数据库Mem_Basic、Mem_Details 中有两个表
和两个属性模型是
public class MemberBasicData
{
public int Id { get; set; }
public string Mem_NA { get; set; }
public string Mem_Occ { get; set; }
}
public class MemberDetail
{
public int Mem_Id { get; set; }
public string Mem_Role { get; set; }
public string Mem_Email { get; set; }
public string Mem_MPh { get; set; }
public DateTime Mem_DOB { get; set; }
public string Mem_BGr { get; set; }
public DateTime Mem_WAnn { get; set; }
public string Mem_Spouse { get; set; }
public string Mem_Web { get; set; }
}
在我的模型中,我想从两个表中检索所有数据,并返回一个列表。但我是如何将这两个属性模型合并为一个属性模型的。类似的东西
public List<MemberBasicData>,List<MemberDetail> GetMemberProfile()//I Know this is wrong
{
............//dbcodes
return list1,list2
}
为什么不创建一个新类:
public class MyClass
{
public List<MemberBasicData> MemberDataList {get;set;}
public List<MemberDetail> MemberDetailList {get;set;}
}
如果你想合并他们,你可以加入他们:
var query = MemberBasicData
.Join
(
MemberDetail,
x=>x.Id,
x=>x.Mem_Id,
(b,d)=>new
{
b.Id,
b.Mem_NA,
b.Mem_Occ,
d.Mem_Id ,
d.Mem_Role,
d.Mem_Email,
d.Mem_MPh ,
d.Mem_DOB ,
d.Mem_BGr ,
d.Mem_WAnn ,
d.Mem_Spouse,
d.Mem_Web
}
)
.ToList()
public class MemberData
{
List<MemberBasicData> BasicData {get;set;}
List<MemberDetail> Details {get;set;}
}
public MemberData GetMemberProfile()//I Know this is wrong
{
............//dbcodes
return new MemberData(){BasicData=list1, Details=list2};
}
试着将你的清单包装在另一个类中。这是同时返回两个列表的最佳形式,因为不存在返回两个值的内置可能性。
之后,您可以访问您的列表,如memberData.Details
和memberData.BasicData
您可以像那样合并这两个列表
var merged = (from m in members
join mb in memberBasics
on m.Mem_Id equals mb.Id // join on some property
into grouping
from mb in grouping.DefaultIfEmpty() // ensures default if no match
select new { Mem_Id = m.Mem_Id }).ToList();
这将使members
中的所有项目与memberBasics
中的匹配项合并,因为这些集合看起来像。。。
var members = new List<MemberDetail> {
new MemberDetail {
Mem_Id = 1
},
new MemberDetail {
Mem_Id = 2
}
};
var memberBasics = new List<MemberBasicData> {
new MemberBasicData {
Id = 1
}
};
但我应该问,您是否正在进行2个DB查询?如果你是这样的话,那么你可以考虑将其减少到一个,并在DB级别进行工作。