将列表项转换为Lower()的问题

Beh*_*ini -5 .net c# asp.net visual-studio-2010

在ASP.Net应用程序上使用C#语言我试图通过使用以下代码行将列表转换为Lower:

return allResults.ToList<Book>().ConvertAll(d => d.ToLower());
Run Code Online (Sandbox Code Playgroud)

但我得到了编译器错误.你能告诉我怎么解决吗?

public ICollection<Book> SelectFilteredBooks(){
 using (APPEntities entities = new APPEntities()) {
   try{
   FilterItemList list = (FilterItemList)HttpContext.Current.Session["FilterList"];
          if (list != null)
             {
               Dictionary<String, Object> parameters = new Dictionary<String, Object>();
               String whereParam = FilterItemList.WhereParameter(list.ItemList, "it", ItemType.Book, parameters);
                  if (!String.IsNullOrEmpty(whereParam))
                      {
                         var allResults = entities.BookS.Where(whereParam);
                         foreach (KeyValuePair<string, Object> kvp in parameters)
                          {
                   allResults.Parameters.Add(new ObjectParameter(kvp.Key, kvp.Value));                                 }

                        return allResults.ToList<Book>().ConvertAll(d => d.ToLower());
                           }
                     }
                 }
                 catch (Exception e)
                 {
                      Debug.WriteLine(e.Message);
                 }
                 return entities.BookS.ToList();
             }
         } 
Run Code Online (Sandbox Code Playgroud)

eva*_*nal 5

你得到一个编译器错误,因为ToLower()没有在Book类上定义(或者至少是我所假设的).在lambda表达式中ToList<Book>().ConvertAll(d => d.ToLower()) d是一个类型的实例Book.你可能需要像字符串d => d.Title.ToLower()那样的东西ToLower(),而不是书籍(除非你自己定义了它,但如果是这样你就不会遇到编译器错误).

编辑:从您的评论听起来,你试图修改每本书的属性值.ConvertAll这不是你想要的.相反,尝试;

return allResults.ToList<Book>().ForEach(d => d.Title = d.Title.ToLower());
Run Code Online (Sandbox Code Playgroud)

这基本上只是循环遍历Book的列表,将lambda表达式应用于每个.