全部,
此问题与 Dynamics CRM 2011 Linq 提供程序有关 - 它确实有很多怪癖。但是,我没有标记它,因为我认为这是一个一般的 Linq 问题。
我有一门课——产品。它有一个 Price 类型的属性(比如 ProductPrice)。
我正在 Linq 中对此进行外部联接。CRM 文档说外部连接是不可能的,但它似乎工作(我在这里问的明显问题)。
所以说我正在做类似的事情:(为伪 linq 道歉)
IList<Product> products = (from p in xrmContext.Products
join pr in xrmContext.Prices
on p.ProductId equals pr.ProductId into prx from prices in prx.DefaultIfEmpty
select new Product { ProductName = p.productName, ProductPrice = new Price { Amount = prices.PriceValue }).ToList();
这在一定程度上很有效。它创建所有产品,无论它们是否具有价格对象。上衣。
问题是 DefaultIfEmpty。毫无疑问,如果产品没有价格,则此 DefaultIfEmpty 将创建一个“默认”价格对象……即具有空值的对象。我真正想要的是没有价格对象 - 即 null,而不是“空白”对象。
这怎么可能?
我通过测试空白价格名称来解决它 - ProductPrice = price.priceName == "" ?null : 新价格 ...
能够做类似 NullIfEmpty 的事情会很好。有任何想法吗?