2016-03-02 76 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不要跳过或拿走。只是我列出了一个项目。恩,我认为是。