2014-05-09 17 views
0

我将如何返回一个唯一列表'listColl'我尝试在'return listColl'的底部使用'Distinct9'''但收到一个错误,但它没有奏效。目前这返回一个项目的重复列表,填充查询中编码的树视图。在asp-mvc4列表中返回不同的项目

 public List<SPList> GetAllLibraries(string webURL) 
    { 
     var listColl = new List<SPList>(); 
     ClientContext _ctx = new ClientContext(webURL); 
     try 
     { 
      var currentWeb = _ctx.Web; 
      var AllLists = currentWeb.Lists; 
      _ctx.Load(AllLists); 
      _ctx.ExecuteQuery(); 
      var query = from list in currentWeb.Lists 
         where list.BaseType == BaseType.DocumentLibrary 
         select list; 

      var listCollection = _ctx.LoadQuery(query.Include(myList => myList.Title, 
              myList => myList.Id, 
              myList => myList.RootFolder.ServerRelativeUrl, 
              myList => myList.ParentWebUrl, 
              myList => myList.Hidden, 
              myList => myList.IsApplicationList)); 
      _ctx.ExecuteQuery(); 

      // /* 
      listColl.AddRange(from list in listCollection 
           where !list.Hidden 
           select new SPList 
           { 
            Title = list.Title, 
            ListGUID = list.Id.ToString(), 
            RootFolderServerRelativeUrl = list.RootFolder.ServerRelativeUrl, 
            ParentWebUrl = list.ParentWebUrl 
           }); 
     // } */ 
      foreach (var Item in listCollection) 
      { 
       listColl.Add(new SPList 
       { 
        Title = Item.Title, 
        RootFolderServerRelativeUrl = Item.RootFolder.ServerRelativeUrl, 
        ListGUID = Item.Id.ToString() 
       }); 
      } 
     } 
     catch (Exception ex) 
     { 
      // error log 
      string error = ex.Message + " Error within GetAllLibraries "; 
     } 
     return listColl; 
    } 
+0

下面的答案没有产生任何错误,他们也没有解决这个问题。难道可能是Distinct的默认相等参数需要被覆盖? – user3605501

回答

0

你能做到这一点吗?

return listColl.Distinct(); 
0
listColl.AddRange((from list in listCollection 
          where !list.Hidden 
          select new SPList 
          { 
           Title = list.Title, 
           ListGUID = list.Id.ToString(), 
           RootFolderServerRelativeUrl = list.RootFolder.ServerRelativeUrl, 
           ParentWebUrl = list.ParentWebUrl 
          }).Distinct()); 
0

速战速决的平均时间解决了这个问题。我无法做Distinct()的原因是因为SPList。

List<SPList> distinct = new List<SPList>(); 
    List<String> ids = new List<string>(); 
    foreach (var lst in listColl) 
    { 
     if (!ids.Contains(lst.ListGUID)) 
     { 
      distinct.Add(lst); 
      ids.Add(lst.ListGUID); 
     } 
    } 
return distinct; 
相关问题