我正在使用需要限制的 LINQ to SQL(通过 DBML)并且遇到了问题。我正在使用动态 LINQ 并发送最终用户先前确定的变量。我在数据库中有一个视图,它保存(通过左外连接)来自主数据库表和连接到它的 5 个表的数据。因为我正在(并且必须)使用动态 LINQ,所以来自 BD 的结果集必须是 .AsQueryable() 从而创建一个 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 具有 .Distinct()。
return data.Distinct().OrderBy(strOrderBy).Select("New(" + strItems + ")");
我需要做的是获取 IQueryable 并从中获取不同的值,因为传入的变量是动态的,我不知道该怎么做。