C# 函数的作用是:抛出加载的值(loadoptions)
我有一个模型,其中一个产品可以有多个价格下降。我正在尝试生成一个最近降价的产品列表 通过加载产品获得最近的价格下降是很容易的,我认为这将是最好的开始方式:C# 函数的作用是:抛出加载的值(loadoptions),c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我有一个模型,其中一个产品可以有多个价格下降。我正在尝试生成一个最近降价的产品列表 通过加载产品获得最近的价格下降是很容易的,我认为这将是最好的开始方式: dlo.LoadWith<PriceDrop>(pd => pd.Product); db.LoadOptions = dlo; return db.PriceDrops.OrderBy(d=>d.CreatedTime); dlo.LoadWith(pd=>pd.Product); db.LoadOptions=d
dlo.LoadWith<PriceDrop>(pd => pd.Product);
db.LoadOptions = dlo;
return db.PriceDrops.OrderBy(d=>d.CreatedTime);
dlo.LoadWith(pd=>pd.Product);
db.LoadOptions=dlo;
返回db.PriceDrops.OrderBy(d=>d.CreatedTime);
对于最近价格下跌的列表非常有用,但是我想要一个产品列表。如果我附加一个“.Select(d=>d.Product)”,我会得到一个产品列表——这很完美——但它们不再与价格下降相关联。也就是说,如果我在产品上调用.hasloadeOrassignedValues,它将返回false。如果我试图询问价格下降的情况,它会试图为他们返回DB
有没有办法解决这个问题,或者我必须创建一个以Products开头的查询,而不使用Select修饰符?我试图避免这种情况,因为在某些情况下,我需要一个价格下降列表,并且我希望尽可能多地重用逻辑(为了清晰起见,我省略了上面示例中的where子句和其他过滤代码)
谢谢,
Tom尝试加载按最新降价订购的产品:
dlo.LoadWith<Product>(p => p.PriceDrops);
db.LoadOptions = dlo;
return db.Products.OrderBy(d => d.PriceDrops.Max(pd => pd.CreatedTime));
dlo.LoadWith(p=>p.PriceDrops);
db.LoadOptions=dlo;
返回db.Products.OrderBy(d=>d.PriceDrops.Max(pd=>pd.CreatedTime));
我从您的问题中了解到您试图避免这种情况,为什么?我认为您需要的是方法,也是DataLoadOptions类上的方法
dlo.AssociateWith<Product>(p => p.PriceDrops.OrderBy(d=>d.CreatedTime))
dlo.AssociateWith(p=>p.PriceDrops.OrderBy(d=>d.CreatedTime))
谢谢,我就这么做。我试图避免它,因为我想在查询PriceDrops时重复使用与查询产品时相同的过滤逻辑(多个where子句)。为了清晰起见,我省略了这些子句。我认为您仍然可以传递表示过滤逻辑的共享表达式实例,并在正确的位置使用它们。