IOrderedQueryableエラーにのIQueryable <>を変換できません。
-
20-09-2019 - |
質問
私は、次のLINQコードを持っています:
var posts = (from p in db.Posts
.Include("Site")
.Include("PostStatus")
where p.Public == false
orderby p.PublicationTime
select p);
if (!chkShowIgnored.Checked) {
posts = posts.Where(p => p.PostStatus.Id != 90);
}
その最後の行(エクストラ)は私にエラーを与えている。
は、暗黙のうちに 'System.Linq.IOrderedQueryable' にタイプ 'System.Linq.IQueryable' を変換できません。
私は
...これが何を意味するのかわからないんだけど
なぜ私はこのエラーを取得しています?
それは、それが罰金コンパイルする前に、私は、クエリに「orderbyの」句を追加して、一度登場したので、私は何が起こっているの予感のようなものがありますが、私はかなりそれに私の指を置くことはできません。
解決
(それはまだの のでしょう命じた)、具体的posts
をピックアップしますIQueryable<Post>
ではなくvar
(としてIOrderedQueryable<Post>
を宣言してみます。
あるいは、再構成、それが私たちは途中でwhere
もたらす(必要に応じて)に私たちを可能にする、端部で注文
var posts = from p in db.Posts
.Include("Site")
.Include("PostStatus")
where p.Public == false
select p);
if (!chkShowIgnored.Checked) {
posts = posts.Where(p => p.PostStatus.Id != 90);
}
var finalQuery = posts.OrderBy(p => p.PublicationTime);
(当然、私たちはfinalQuery
を見て)
それはerroringされる理由は、現在、あなたは(基本的に)持っているということです
IOrderedQueryable<Post> posts = {snip};
...
posts = {something (Where) that returns IQueryable<Post>}
他のヒント
型のIQueryableのラムダexpressionisの結果。それはとてもあなたがたとえば、これを変換する必要があります最初にそれを使用するには、拡張メソッドを許可しません、リストます。
あなたが使用してこれを行うことができます。
posts = posts.ToList().Where(p => p.PostStatus.Id != 90);
所属していません StackOverflow