LinqToSql:从查询中使用的列表中选择字段

本文关键字:列表 选择 字段 查询 LinqToSql | 更新日期: 2023-09-27 18:06:25

我对表Installation执行查询,以获得查询不同数据库上的表Product所需的id列表(在您询问之前,必须这样,不能跨dbs查询)。下面是列表的样子:

class Installation 
{
    Guid InstallationId
    Guid ProductId
}
List<Installation> installs;

我没有任何问题使用这个列表查询到Product表,看起来像这样:

var prods = (from p in context.Product 
             where installs.Select(i => i.ProductId).Contains(p.ProductId)
             select new
             {
                ProductNumber = p.ProductNumber
                // How do I get InstallationId from installs??
             }).ToList();

我需要知道的是如何从列表中检索InstallationId并将其存储在新列表中?

LinqToSql:从查询中使用的列表中选择字段

你应该做一个join

var products = (from product in context.Product
                join install in installs
                    on install.ProductId equals product.ProductId
                select new {
                    ProductNumber = product.ProductNumber
                    InstallationId = install.InstallationId
                }
               ).ToList();

稍微重构一下Jason的回答,以允许LinqToSql异常。

var products = (from product in context.Product                
                where installs.Select(i => i.ProductId).Contains(p.ProductId)
                select product).ToList()
var installedProducts = (from product in products
                         join install in installs
                         on install.ProductId equals product.ProductId
                         select new 
                         {
                             ProductNumber = product.ProductNumber,
                             InstallationId = install.InstallationId
                         }).ToList();