2013-08-30 39 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,並在數據庫層面進行工作。

相關問題