我在业务层中使用这个静态方法来返回Dinners
public static System.Collections.Generic.List<Dinner> GetDinners()
{
using (DataClassesDataContext h = new DataClassesDataContext())
{
var query = (from dins in h.Dinners
where dins.Title == "New York"
select dins);
return query.ToList();
}
}
我用它来填充我的aspx页面中的网格。
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource = BusinessLayer.GetDinners();
GridView1.DataBind();
}
我想限制业务层级别的返回列。 我可以在Linq这样做。
var query = (from dins in h.Dinners
where dins.Title == "New York"
select new { dins.Title, dins.DinnerID });
然后我得到一个匿名类型错误,这是有道理的,但我该如何正确解决这个问题呢?
Cannot implicitly convert type 'System.Collections.Generic.List<AnonymousType#1>' to
'System.Collections.Generic.List<Dinner>
答案 0 :(得分:2)
除非返回类型是动态的,否则不能从方法返回匿名类型。否则,您需要为select语句中的结果和项目创建一个单独的类。
将签名更改为:
public static System.Collections.Generic.List<dynamic> GetDinners()
{
然后像这样返回您的查询:
return query.ToList().Cast<dynamic>().ToList();
或者创建一个类并返回它的列表,而不是使用匿名类型。