Linq To Sql Skip Take

时间:2016-03-02 17:38:26

标签: c# linq

我想将每个图标路径保存到变量中,从下面的查询中,只有PathIcon1具有值。保留路径图标为空

查询

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的一部分,剩余的PathIcon为空

1 个答案:

答案 0 :(得分: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>();
          }

如果您将PathIcon2值设为“test”,请尝试此操作,您的问题不会跳过或占用。我列出的内容包括一个项目。我想是的。