2009-12-22 70 views
0

我有4個表:CustomerDocument,CustomerLink,CustomerAdditionalInfo和CustomerImage。他們每個人都有一個CustomerNumber的值,我需要從每個表中拉出客戶號碼並放入一個下拉列表中。我知道如何用一張桌子做,但不是多個。此外,還有一個限制,即客戶編號需要不爲空,所以我需要在每個連接中包含這個限制嗎?這裏有一些我現在擁有的代碼。 ODB是DataContext的需要幫助從SQL數據庫中的多個表填充一個asp:dropdownlist

var oData = from c in oDb.CustomerAdditionalInfos 
        where (c.CustomerID == CustomerID && 
          c.CustomerNumber != null && 
          c.CategoryID == CategoryID) 

        orderby c.CustomerNumber 
        select new { c.CustomerNumber }; 

     return oData; 

回答

2

你能做到這一點....

var oData = (from c in oDb.CustomerAdditionalInfos 
      where c.CustomerNumber != null 
      select new 
      { 
        CustomerNumber = c.CustomerNumber 
      }).Union 
       (from d in oDb.CustomerDocument 
        where d.CustomerNumber != null 
        select new 
        { 
         CustomerNumber = d.CustomerNumber 
        }).Union 
         (from l in oDb.CustomerLink 
         where l.CustomerNumber != null 
         select new 
         { 
          CustomerNumber = l.CustomerNumber 
         }).Union 
          (from i in oDb.CustomerImage 
          where i.CustomerNumber != null 
          select new 
          { 
           CustomerNumber = i.CustomerNumber 
          }).OrderBy(c => c.CustomerNumber); 

那簡直是一切的一切四個表的CustomerNumbers的工會。這將包括重複如果有重複。如果你只想要不同的CustomerNumbers,那麼只需在OrderBy之後執行Distinct()

+0

非常感謝,這工作完美。當用戶從ddl中選擇客戶號碼時,如何跟蹤客戶號碼來自哪個表格? – Justen 2009-12-22 14:43:30

+1

你可以在'select new'中添加第二個字段,這將是表名。然後,您將將CustomerNumber指定爲「DataTextField」,將「TableName」指定爲「DataValueField」。 – 2009-12-22 14:58:02

+0

好吧,非常感謝,非常有幫助。出於好奇,如果有人想跟蹤他們來自哪個表,那麼又該如何呢?例如,如果它們在表格中是重複的數字(但是不同的值),並且您想要用數字加載ddl,並且跟蹤該數字的ID和表名稱,那麼會怎麼做呢? – Justen 2009-12-22 15:07:51

相關問題