在ASP.Net应用程序上使用C#语言我试图通过使用以下代码行将列表转换为Lower:
return allResults.ToList<Book>().ConvertAll(d => d.ToLower());
但我得到了编译器错误。能告诉我如何解决这个问题吗?
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();
}
}
答案 0 :(得分: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());
这基本上只是循环遍历Book的列表,将lambda表达式应用于每个。