2013-08-30 43 views
0

您好我正在做我的项目在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 
    } 
+2

你想合并列表的列(属性)?否则,你可以创建一个新的类,它有2个列表属性 – Jonathan

+0

雅我想合并这两个列表并返回一个列表。这是可能的 – neel

回答

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

+0

我创建公共MemberData GetMemberProfile() { MemberData md = new MemberData(); return md; }但在MD比不显示任何财产项目 – neel

+0

@Parvathiiiii你需要初始化像我的代码字段 – wudzik

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() 
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个DB查询?如果你是可能的话,你可以考虑把它减少到1,并在数据库层面进行工作。

相关问题