在linq中,如何从列表中取出特定参数并构建不同类型的新列表?

qua*_*els 2 c# linq foreach

我是linq的新手.到目前为止,我一直主要使用这样的linqTOsql : MyRepository.Mytable.Where(x => x.id == 2).

我想知道如何从这种类型的查询中获取一个列表,并将一个特定的参数放入一个新的简单列表,如List<long>.

所以我得到了这样的记录:

List<Entry2Cats> e2c = genesisRepository.Entry2Cats.Where( x => x.streamEntryID == id).ToList()
Run Code Online (Sandbox Code Playgroud)

我希望获得每个项目的类别ID参数,e2c以便我可以将其移动到List<long>.

显然,这可以通过以下方式简单地完成foreach:

        List<Entry2Cats> e2c = genesisRepository.Entry2Cats
                               .Where(x => x.streamEntryID == id)
                               .ToList();
        List<long> e2cCatIDs = new List<long>();

        foreach (Entry2Cats item in e2c)
        {
            e2cCatIDs.Add(item.catID);
        }
Run Code Online (Sandbox Code Playgroud)

这可以用linq完成吗?如果可以的话,我是否应该打扰它或者是foreach同样好的?

as-*_*cii 6

List<long> ids = genesisRepository.Entry2Cats
                 .Where(x => x.streamEntryID == id)
                 .Select(a => a.catID)
                 .ToList();
Run Code Online (Sandbox Code Playgroud)

只需使用Select即可获取ID.