如果没有主键,如何获得唯一的Linq-to-Entities结果?

时间:2014-04-22 16:45:33

标签: linq ado.net linq-to-entities

我有一个Oracle数据源的实体模型,我无法控制它。使用此模型,我查询特定视图以查看给定产品的所有批量价格中断:

enter image description here

如您所见,此视图没有主键。这是我正在使用的LINQ:

 var db = GetOracleDataContext();
 var result = db.ITEMPRICEBREAKS_V.Where(p => p.STOCKNO == stockId).ToList();

这在某种程度上有效,但它不会返回四个不同的记录及其自己的数量和定价,而是返回四个相同的记录,每个记录包含第一条记录的定价和数量($ 4800,0 ,2)。

我无法控制这个观点。有没有其他方法可以构建我的LINQ查询,以便我可以获得四个不同的值?

1 个答案:

答案 0 :(得分:2)

仅选择您关注的字段并使用Distinct()。例如:

var result = db.ITEMPRICEBREAKS_V
    .Where(p => p.STOCKNO == stockId)
    .Select(p => p.Price)
    .Distinct()
    .ToList();

但是,我强烈建议您和其他评论者一起获得主键。