2016-10-14 15 views
0

別のリストのアイテムからリストを作成するにはどうすればよいですか?別のリストからアイテムのリストを作成する方法

List<Post> postList = db.Posts.Where(u => u.PostId == postId).ToList(); 
    List<PostView> viewList = db.PostViews.Where(u => u.PostId **** is equal to PostId within postList****); 

私は理解が崩れている場所を示すために****を使用しました。

+0

linqを使用した例については、msdnを参照してください。場合によっては、リストを結合するためにjoinメソッドを使用する必要があると思います。場合によっては、どこからクラス全体ではなくクラスの一部のプロパティだけを取得するためにSELECTメソッドを使用する必要があります。 https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b – jdweng

答えて

2

select他のリストのIdの場合は、そのリストcontainsあなたの現在のIDを確認してください。しかし、私はIDの最初のリストを生成します。

List<Post> postList = db.Posts.Where(u => u.PostId == postId).ToList(); 
List<int> postIds = postList.Select(u => u.PostId).ToList(); 
List<PostView> viewList = db.PostViews.Where(u => postIds.Contains(u.PostId)).ToList(); 
+0

'postIds'が' HashSet'だった方が良いでしょう –

+0

すべての答えは近いようですが、あなたとabionは次のエラーで戻ってきます:暗黙的に型 'System.Linq.IQueryable 'を 'System.Collections.Generic.List 'に変換できません。明示的な変換が存在します(キャストがありませんか?) – DudeThatCodes

+1

@DudeThatCodesリストを宣言していましたが、IQueryableを返していました。私のせいで私はそれを捕まえなかった。ただ私の答えを更新しました。 – Gavin

0

はこのショット与える:あなたのイドを仮定のは、int型である

List<PostView> viewList = db.PostViews.Where(
    u => postList.Any(p => p.PostId == u.PostId)); 
0
List<PostView> viewList = db.PostViews.Where(u => postList.Any(pl=>pl.postId == u.postId)); 

をしかし、あなたは一発でこれを行うことができるはず:

List<PostView> viewList = db.PostViews.Where(u => u.Post.postId == postId); 

か偶数

List<PostView> viewList = db.PostViews.Where(u => u.PostId == postId); 

postを持つpostviewと思われます。最初にpostsのリストを取得してから、そのリストからviewsのリストを取得する必要はありません。

関連する問題