Запросы LINQ to Entities внутренне преобразуются в операторы sql. В вашем случае это просто, что поставщик LINQ to Entity не может отобразить вызов toString в подходящий оператор SQL. Вы можете извлечь данные из LINQ для объекта, а затем перечислить в автономном режиме и внести необходимые изменения, например:
var data = (from q in softwares
select new
{
ID = q.id,
SoftwareName = q.softwareName,
Key = q.Keys.Key
Date = q.Date
}).ToList();
, а затем преобразовать часть Date, вызвав метод ToString () в автономном режиме.
data.ForEach(item => item.Date = item.Date.ToString());
Вы возвращаете анонимный тип из вашего метода. Анонимные типы доступны только внутри класса, в котором они определены. Вы можете попробовать что-то вроде кода, который я дал ниже:
private IList<SoftwareInfo> SortGridView()
{
// regular code
return (from q in softwares
select new SoftwareInfo
{
ID = q.id,
SoftwareName = q.softwareName,
Key = q.Keys.Key,
Date = q.Date
}).ToList();
}
public class SoftwareInfo
{
public int ID {get;set;}
public string SoftwareName {get;set;}
public string Key {get;set;}
public DateTime Date {get;set;}
}
protected void ButtonSearch_Click(object sender, EventArgs e)
{
GridView1.DataSource = SortGridView();
GridView1.DataBind();// <<--- Exception
}