[CSHARP-524] Distinct followed by Count is not supported in a LINQ query but the error message is wrong Created: 10/Jul/12  Updated: 20/Mar/14  Resolved: 13/Jul/12

Status: Closed
Project: C# Driver
Component/s: None
Affects Version/s: 1.5
Fix Version/s: 1.6

Type: Bug Priority: Minor - P4
Reporter: Robert Stam Assignee: Robert Stam
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

See the discussion in mongodb-csharp:

https://groups.google.com/forum/?fromgroups#!topic/mongodb-csharp/oeYHjPB7O6Q

To reproduce:

public class C
{
    public int Id;
    public int X;
}
 
collection.Insert(new C { Id = 1, X = 1 });
collection.Insert(new C { Id = 2, X = 2 });
 
var count = collection.AsQueryable()
    .Select(a => a.X)
    .Distinct()
    .Count();

The exception thrown is:

System.NotSupportedException: Distinct must be used with Select to identify the field whose distinct values are to be found.
   at MongoDB.Driver.Linq.SelectQuery.ExecuteDistinct(IMongoQuery query) in C:\work\rstam\mongo-csharp-driver\Driver\Linq\Translators\SelectQuery.cs:line 302
   at MongoDB.Driver.Linq.SelectQuery.Execute() in C:\work\rstam\mongo-csharp-driver\Driver\Linq\Translators\SelectQuery.cs:line 137
   at MongoDB.Driver.Linq.MongoQueryProvider.Execute(Expression expression) in C:\work\rstam\mongo-csharp-driver\Driver\Linq\MongoQueryProvider.cs:line 155
   at MongoDB.Driver.Linq.MongoQueryProvider.Execute[TResult](Expression expression) in C:\work\rstam\mongo-csharp-driver\Driver\Linq\MongoQueryProvider.cs:line 131
   at System.Linq.Queryable.Count[TSource](IQueryable`1 source)
   at ConsoleApplication1.Program.Main(String[] _args) in C:\Users\Robert Stam\documents\visual studio 2010\Projects\ConsoleApplication1\ConsoleApplication1\Pro
gram.cs:line 39



 Comments   
Comment by auto [ 13/Jul/12 ]

Author:

{u'date': u'2012-07-12T14:40:06-07:00', u'email': u'robert@10gen.com', u'name': u'rstam'}

Message: CSHARP-524: better error message if Distinct is not the last operator in a LINQ query.
Branch: master
https://github.com/mongodb/mongo-csharp-driver/commit/b09ee7d3cf564cc6d440a5e131a5835b6d624985

Generated at Wed Feb 07 21:37:05 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.