2016-03-02 74 views
0

我想將每個圖標路徑保存到一個變量中,從下面的查詢中只有PathIcon1具有值。在保持路徑圖標是空的Linq To Sql跳過

查詢

using (CarteringServiceClientDataContext dc = new CarteringServiceClientDataContext()) 
      { 


       result = (from a in dc.GetTable<tblSupplier>() 
          join b in dc.GetTable<tblCity>() 
          on a.CityId equals b.Id 
          join c in dc.GetTable<tblZone>() 
          on b.ZoneId equals c.Id 

          let r = (from re in dc.GetTable<tblClientReview>() 
            where re.SupplierId == a.Id 
            select re.note).Average() 

          let i = (from im in dc.GetTable<tblSupplierItem>() 
            where im.SupplierId == a.Id 
            select im.tblItem.IconPath).ToArray() 

          select new SearchResult 
          { 
           CompanyId = a.Id, 
           CompanyName = a.Company, 
           Localisation = a.Locality, 
           City = b.Name, 
           Zone = c.Name, 
           Rating = r.ToString(), 
           PathIcon1 = i.Take(1).SingleOrDefault(), 
           PathIcon2 = i.Skip(1).Take(1).SingleOrDefault(), 
           PathIcon3 = i.Skip(2).Take(1).SingleOrDefault(), 
           PathIcon4 = i.Skip(3).Take(1).SingleOrDefault(), 
           PathIcon5 = i.Skip(4).Take(1).SingleOrDefault() 
          }).ToList<SearchResult>(); 


      } 

的一部分從PathIcon1的remaing PathIcon是空

+0

也許你的支持數據沒有你要找的信息?如果沒有找到,'.SingleOrDefault()'將安靜地返回一個空值。當你調試這個時,'i'裏有什麼? – David

+0

@大衛一個字符串的列表,超過10個項目 – Jmocke

+0

讓我=(從IM在dc.GetTable () 其中im.SupplierId == a.Id 選擇im.tblItem.IconPath).ToArray() .Add(「測試」)你是否嘗試這樣並控制PathIcon2值?@Jmocke –

回答

1
using (CarteringServiceClientDataContext dc = new CarteringServiceClientDataContext()) 
       { 
        result = (from a in dc.GetTable<tblSupplier>() 
           join b in dc.GetTable<tblCity>() 
           on a.CityId equals b.Id 
           join c in dc.GetTable<tblZone>() 
           on b.ZoneId equals c.Id 

           let r = (from re in dc.GetTable<tblClientReview>() 
             where re.SupplierId == a.Id 
             select re.note).Average() 

           let i = (from im in dc.GetTable<tblSupplierItem>() 
             where im.SupplierId == a.Id 
             select im.tblItem.IconPath).ToArray().Add("test") 

           select new SearchResult 
           { 
            CompanyId = a.Id, 
            CompanyName = a.Company, 
            Localisation = a.Locality, 
            City = b.Name, 
            Zone = c.Name, 
            Rating = r.ToString(), 
            PathIcon1 = i.Take(1).SingleOrDefault(), 
            PathIcon2 = i.Skip(1).Take(1).SingleOrDefault(), 
            PathIcon3 = i.Skip(2).Take(1).SingleOrDefault(), 
            PathIcon4 = i.Skip(3).Take(1).SingleOrDefault(), 
            PathIcon5 = i.Skip(4).Take(1).SingleOrDefault() 
           }).ToList<SearchResult>(); 
      } 

試試這個,如果你是GET PathIcon2值作爲 「測試」 你的問題ISN不要跳過或拿走。只是我列出了一個項目。恩,我認爲是。