Помощь в создании запроса LINQ при использовании анонимных типов - PullRequest
1 голос
/ 11 апреля 2011

Я начал с:

IQueryable<Author> authors2 = db.Authors;

Затем я собираю authors2 в нескольких операторах if, вот одно из них

authors2 = authors2.Where(t => t.ItemAuthors.Any(b => b.Item.CategoryItems.Any(z => z.categoryID == int.Parse(ddlCategory.SelectedValue))));

Тогда, наконец, я хотел бы добавить это в конец подготовленного, где пункты

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();

Видимо, компилятор не очень доволен моим новым утверждением. Как я могу переписать это для достижения той же цели? Я считаю, что это называется созданием анонимного типа.

Там написано существует явное преобразование (вы пропустили приведение?) Я не могу понять, как его привести.

1 Ответ

1 голос
/ 11 апреля 2011

В вашем третьем утверждении возвращаемый тип не совпадает с типом author2, поскольку Select выбирает другой тип, отличный от Author

Так что присвойте значение новой переменной

var authorsFinal = authors2
                    .OrderBy(x => x.text)
                    .Select(x => new
                    {
                      authorText = string.Format("{0} ({1})",
                                                 x.text, 
                                                 x.ItemAuthors.Count())
                    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...