0

嗨,我正在使用 sql 和 c# 在 mvc4 中做我的项目。

我在数据库 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
    }
4

3 回答 3

2

你为什么不创建一个新类:

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()
于 2013-08-30T06:37:47.267 回答
1
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

于 2013-08-30T06:37:43.080 回答
1

您可以像这样合并两个列表

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 个数据库查询吗?如果您是,那么您可以考虑将其减少到一个并在数据库级别进行工作。

于 2013-08-30T06:52:18.803 回答