#linq-to-sql
#linq-to-sql
Вопрос:
Я начал с:
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))));
Затем, наконец, я хотел бы добавить это в конец созданных предложений 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 new. Как я могу переписать это для достижения той же цели? Я полагаю, что это называется созданием анонимного типа.
Здесь говорится, что существует явное преобразование (вам не хватает приведения?) Я не могу понять, как его выполнить.
Ответ №1:
В вашем третьем операторе возвращаемый тип отличается от authors2, потому что Select проецирует другой тип, отличный от Author
Итак, присвоите значение новой переменной
var authorsFinal = authors2
.OrderBy(x => x.text)
.Select(x => new
{
authorText = string.Format("{0} ({1})",
x.text,
x.ItemAuthors.Count())
});