2013-08-22 14 views
0

我正在使用Linq並剛剛開始使用它。 當我使用單個表時,我的gridview正在填充,但現在我正在嘗試從客戶端信息表中加入客戶名。使用連接和泛型列表的實體Linq

錯誤是Event_Setup不包含ClientFirstName的定義。所以它檢查Event_Setup表而不是Client_Info。

public List<EventData> GetDetails() 
    { 
     using (EMSEntities db = new EMSEntities()) 
     { 
      var context = from events in db.Event_Setup 
          join clients in db.Client_Info on events.ClientId equals clients.ClientId 
         select events; 

      List<EventData> newEvent = new List<EventData>(); 

      foreach (var e in context) 
      { 
       EventData test = new EventData(); 

       test.Event_Title = e.EventTitle; 

//Error on e.ClientFirstName, Event Setup does not contain Definition 
(located in Client_Info table not Event Setup) 
       test.Name = e.ClientFirstName; 
       test.Start_Date = e.EventDateFrom; 
       test.End_Date = e.EventDateFrom; 



       newEvent.Add(test);     
      } 
      return newEvent; 
     }   
    } 

DAL

public class EventData 
{   
     public string Event_Title { get; set; } 
     public string Name { get; set; } 
     public DateTime? Start_Date { get; set; } 
     public DateTime? End_Date { get; set; }    
} 

回答

1

此代碼是不是做與加盟clients數據什麼。你可以看到它只是選擇events

var context = from events in db.Event_Setup 
       join clients in db.Client_Info on events.ClientId equals clients.ClientId 
       select events; 

一旦你得到的是LINQ的聲明,clients已經一去不復返了。它不會爲你合併任何數據。你需要做的投影,就像這樣:

var context = from events in db.Event_Setup 
       join clients in db.Client_Info on events.ClientId equals clients.ClientId 
       select new EventData 
       { 
        Event_Title = events.EventTitle, 
        Name = clients.ClientFirstName, 
        Start_Date = events.EventDateFrom, 
        End_Date = events.EventDateFrom 
       }; 
+0

向你表示感謝,現在我只需要找出如何從這些字段獲取日期 – CSharper

0

謝謝你的科裏,這裏的列表想什麼的人誰認爲這一質疑

foreach (var e in context) 
      { 
       EventData test = new EventData(); 

       test.Event_Title = e.Event_Title; 
       test.Name = e.Name; 
       test.Start_Date = e.Start_Date; 
       test.End_Date = e.End_Date;   

       newEvent.Add(test);     
      } 
      return newEvent; 
+0

您可以使用初始化語法使其更簡單:newEvent.Add(new EventData {Event_Title = e.Event_title,Name = e.Name,Start_Date = e.Start_Date,End_Date = e.End_Date})' –

+0

事實上,它看起來就像是從一個EventData枚舉拷貝到另一個枚舉,所以你不妨直接說'List newEvent = context.ToList();' –