需要帮助从SQL数据库中的多个表填充一个asp:dropdownlist

问题描述:

我有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; 

你能做到这一点....

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