0

こんにちは、SQL と C# を使用して mvc4 でプロジェクトを実行しています。

データベースMem_Basic、Mem_Detailsに2つのテーブルがあります

そのための2つの適切なモデルは

 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; }

    }

私のモデルでは、両方のテーブルからすべてのデータを取得し、単一のリストを返したいと考えています。しかし、どのようにしてこの 2 つのプロパティ モデルを 1 つに結合したのでしょうか。そんな感じ

   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

次のように2つのリストをマージできます

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つに減らし、DBレベルで作業を行うことを検討できます。

于 2013-08-30T06:52:18.803 に答える
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};
}

リストを別のクラスでラップしてみてください。2 つの値を返す可能性が組み込まれていないため、これは同時に 2 つのリストを返す最良の形式です。

その後、次のようにリストにアクセスできmemberData.DetailsますmemberData.BasicData

于 2013-08-30T06:37:43.080 に答える