调用并返回两个相同型号的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
    }

调用并返回两个相同型号的List

为什么不创建一个新类:

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.DetailsmemberData.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级别进行工作。