2016-05-26 1 views
-1

テーブルを照会する際にいくつかの困難があります。テーブルにはResourceIDの列とProjectIDの列があります。私は、すべてのint番号のリストをResourceIDから得たいと思っています。ProjectIDprojIdと一致します。これは可能ですか?一致するすべての数字を選択するLinqクエリ

私はテストしましたが、これは間違っていると思います。 resources変数を使用して値を取得できると思ったが、それは機能していない。

var resources = db.Activities.Where(x => x.ProjectID == projId).ToList(); 
resources. ???? 

答えて

2

あなただけのあなたのコレクション内の要素ごとに(この場合ResourceIDプロパティには)必要な特定のプロパティを引くにSelect()クエリを経由してこれを実現できます。

// Get your resources that meet your requirement 
var resources = db.Activities.Where(x => x.ProjectID == projId).ToList(); 
// Get your Resource IDs from your previous query 
var resourceIds = resources.Select(r => r.ResourceID); 

あなたは可能性実際には1回の通話でこれを実行してください。

// This will return a list of ResourceIDs that match 
var resourceIds = db.Activities.Where(a => a.ProjectID == projId) 
           .Select(a => a.ResourceID) 
           .ToList(); 
+0

感謝を!変数idsはリスト内の各リソースの値を反復して変更できるリストですか? –

+0

返されるIDは独自の別のコレクションになり、取得元のリソースとの関係はありません。確かにIDを反復することはできますが、実際のエンティティを変更したい場合は、実際のエンティティ自体を引き出す必要があります。それは理にかなっていますか? –

+0

いいえ、ちょっとわかりにくいです。 ResourceID列の番号は、Resource表のIDのIDです。このリストの各リソースのIDを持っていれば、それを使ってテーブルにデータを反復したり追加したり変更することはできませんか? –

0

アクティビティのリストが表示されます。必要なのは、必要な項目(この場合はResourceID列)を選択することです。

var resources = db.Activities.Where(x => x.ProjectID == projId) 
    .Select(x => x.ResourceID) 
    .Distinct() // Thought you might want this 
    .ToList(); 

また、時には明確にすることができ、このような異なるフォーマットを使用することができます。

var resources = (from a in db.Activities 
       where a.ProjectID == projId 
       select a.ResourceID).Distinct().ToList(); 
2

私は答えがあると信じて:あなたはint型のリストを取得したい場合

var resources = db.Activities.Where(x => x.ProjectID == projId).Select(x => x.ResourceID).ToList(); 
0

クエリを更新してください...あなたの答えのための

var resources = db.Activities.Where(x => x.ProjectID == projId).Select(x => x.ResourceID).ToList(); 
関連する問題