2013-11-21 18 views
2

我現在有一個實體,它名爲Basdiseasecure與ComdrugList:如何使用LINQ處理嵌套實體?

public class Basdiseasecure 
{ 
    public Guid    Disease_cure_id { get; set; } //pk 
    public Guid?    Eartag_id  { get; set; } 
    public DateTime?   Cure_time  { get; set; } 
    public string    Cure_method  { get; set; } 
    public string    Cure_result  { get; set; } 
    public string    Combdrug_idlist { get; set; } 

    public List<Bascombdrug> ComdrugList { get; set; } 
} 

的Bascombdrug實體如下列出:

public class Bascombdrug 
{ 
    public Guid  Combdrugid { get; set; } //pk 
    public string Combdrugname { get; set; } 
    public string Combdrugnote { get; set; } 
    public DateTime Updatetime { get; set; } 
} 

在實體Basdiseasecure中,Combdrug_idlist存儲Combdrugid並用逗號(分裂他們像F47EF316-2308-4673-AFA4-D5FA81E520D8,F47EF316-2308-4673-AFA4-D5FA81E52000)。下面是我使用Disease_cure_id得到Basdiseasecure實體代碼:

[WebMethod] 
public List<Basdiseasecure> GetDiseaseCureInfo(Guid id) 
{ 
     IQueryable<Basdiseasecure> getDiseaseCure; 
     using (GDeerGardenEntities entities = new GDeerGardenEntities()) 
     { 
       getDiseaseCure = from p in entities.bus_disease_cure 
           select new Basdiseasecure() 
           { 
            Disease_cure_id = p.disease_cure_id, 
            Eartag_id = p.eartag_id, 
            Cure_time = p.cure_time, 
            Cure_method = p.cure_method, 
            Cure_result = p.cure_result, 
            Combdrug_idlist = p.combdrug_idlist 
            //How can I build ComdrugList here ? 
           }; 
      return getDiseaseCure.ToList(); 
    } 
} 

我不知道如何構建基於對Combdrug_idlist場我的Bascombdrug名單。 有沒有什麼好的方法可以做到這一點?謝謝。

編輯

在這裏,我得到了一個方法:

首先不ComdrugList返回內部列表。

二回路的Combdrug_idlist領域,並獲得IDS

三使用LINQ通過使用ID逐個提取相關型號信息,並將它們組建成上市實體。

以上是我目前使用的方法,我需要爲此場景編寫很多代碼。這就是我問這個問題的原因。

+0

所以你想獲得的所有'GUIDs',扔用逗號分隔的字符串? – Marco

+0

@Serv否,我想根據已包含GUID集合的Combdrug_idlist字段構建ComdrugList。 – CharlieShi

+0

@Serv,實際上,我想知道如何在一段時間內通過使用LINQ來填充Basdiseasecure實體 – CharlieShi

回答

1

試試這個(假設entities.bus_comb_drug是源收集其被用於創建Bascombdrug實體):

getDiseaseCure = 
    from p in entities.bus_disease_cure 
    select new Basdiseasecure() 
    { 
     // other properties 
     ComdrugList = 
     (from d in entities.bus_comb_drug 
      join ids in p.combdrug_idlist.Split(',') on 
       d.combdrugid.ToString().ToLower() equals ids.ToLower() 
      select new Bascombdrug() 
      { 
       Combdrugid = d.combdrugid 
       // other properties 
      }).ToList() 
    };