Linq查询选择匹配的所有数字

时间:2016-05-26 13:39:41

标签: c# linq

查询表格时遇到一些困难。表格中有ResourceID列和ProjectID列。我想获取int中所有ResourceID个号码的列表,其中ProjectIDprojId号码匹配。这可能吗?

我已经测试过,但我想这是错误的。我以为我可以使用resources变量来获取值,但这不起作用。

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

4 个答案:

答案 0 :(得分:2)

您可以通过Select()查询完成此操作,仅为集合中的每个元素提取所需的特定属性(在本例中为ResourceID属性):

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

如果您愿意,您实际上只需在一次通话中执行此操作:

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

答案 1 :(得分:2)

我相信答案是:

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

答案 2 :(得分: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();

答案 3 :(得分:0)

如果您想获得int ..

列表,请更新您的查询
    var resources = db.Activities.Where(x => x.ProjectID == projId).Select(x => x.ResourceID).ToList();