我刚刚开始:
IQueryable<Author> authors2 = db.Authors;
然后我在多个if语句中构建authors2
,这里是其中一个
authors2 = authors2.Where(t => t.ItemAuthors.Any(b => b.Item.CategoryItems.Any(z => z.categoryID == int.Parse(ddlCategory.SelectedValue))));
然后最后我想将这个附加到where where子句
的末尾authors2.OrderBy(x => x.text).Select(x => new
{
authorText = string.Format("{0} ({1})",x.text, x.ItemAuthors.Count())
});
绑定这样的控件:
ddlAuthor.DataSource = authors2;
ddlAuthor.DataTextField = "authorText";
ddlAuthor.DataBind();
显然编译器对我的select新语句不太满意。我怎样才能重写这个以达到同样的目标?我相信这称为创建匿名类型。
它说存在显式转换(你是否错过了演员?)我无法弄清楚如何投射它。
答案 0 :(得分:1)
在第三个语句中,返回的类型与authors2不同,因为Select项目与作者不同的其他类型
所以将值赋给新变量
var authorsFinal = authors2
.OrderBy(x => x.text)
.Select(x => new
{
authorText = string.Format("{0} ({1})",
x.text,
x.ItemAuthors.Count())
});