我正在使用LINQ to SQL(通过DBML),我需要限制并且存在问题。我正在使用动态LINQ并发送由最终用户以前确定的变量。我有一个在数据库中的视图(通过左外连接)主数据库表中的数据和5个表连接到它。因为我(而且必须)使用动态LINQ,所以BD的结果集必须是.AsQueryable(),从而创建一个IQueryable结果集。下面是它正在做什么的一个例子:使用LINQ to SQL获取IQueryable结果集的不同值
可以说,该视图可以保存汽车信息(品牌,型号,年份,颜色,米拉格,服务记录)。 如果用户将在他们希望看到的是,今年已提供服务的所有福特野马,结果集中会回来这样
[uniqueID - 1][Ford][Mustang][1/1/2012](service date)
[uniqueID - 1][Ford][Mustang][2/1/2012](service date)
[uniqueID - 1][Ford][Mustang][3/1/2012](service date)
[uniqueID - 1][Ford][Mustang][4/1/2012](service date)
这很好,让我们假设,这个特殊的野马已经有4个服务今年完成。
但是,如果用户将在刚刚看到全黑色的福特那么它回来
[uniqueID - 1][Ford][Mustang]
[uniqueID - 1][Ford][Mustang]
[uniqueID - 1][Ford][Mustang]
[uniqueID - 1][Ford][Mustang]
[uniqueID - 2][Ford][Taurus]
它返回行的每一个服务,即使该服务会为空,则返回拥有的IQueryable a .Distinct()。
return data.Distinct().OrderBy(strOrderBy).Select("New(" + strItems + ")");
我需要能够做的,是采取的IQueryable并从中获得不同的值,因为在未来的变量是动态的,我不知道如何做到这一点。
为什么会有4个服务行是空?这些行不应该不存在于服务表中吗? – omatase
@omatase问题在于服务存在,但是当我想要提取不涉及服务的数据时,我无法获取不同的值,因为该视图看到服务,因此它不是独特的。 – EvanGWatkins