使用匿名类型时帮助构建LINQ查询

时间:2011-04-11 02:04:39

标签: linq-to-sql

我刚刚开始:

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新语句不太满意。我怎样才能重写这个以达到同样的目标?我相信这称为创建匿名类型。

它说存在显式转换(你是否错过了演员?)我无法弄清楚如何投射它。

1 个答案:

答案 0 :(得分:1)

在第三个语句中,返回的类型与authors2不同,因为Select项目与作者不同的其他类型

所以将值赋给新变量

var authorsFinal = authors2
                    .OrderBy(x => x.text)
                    .Select(x => new
                    {
                      authorText = string.Format("{0} ({1})",
                                                 x.text, 
                                                 x.ItemAuthors.Count())
                    });