Skip to content

Commit 2ec8fa3

Browse files
author
rstam
committed
Merged pull request for CSHARP-413 with minor changes.
1 parent 8f3b30c commit 2ec8fa3

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

Driver/Linq/Translators/SelectQuery.cs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -250,14 +250,7 @@ private IMongoQuery BuildAnyQuery(MethodCallExpression methodCallExpression)
250250
{
251251
var arguments = methodCallExpression.Arguments.ToArray();
252252
var serializationInfo = GetSerializationInfo(arguments[0]);
253-
var itemSerializerProvider = serializationInfo.Serializer as IBsonItemSerializationInfoProvider;
254-
if (itemSerializerProvider == null)
255-
{
256-
return null;
257-
}
258-
259-
var itemSerializationInfo = itemSerializerProvider.GetItemSerializationInfo();
260-
if (itemSerializationInfo == null)
253+
if (serializationInfo == null)
261254
{
262255
return null;
263256
}
@@ -270,6 +263,18 @@ private IMongoQuery BuildAnyQuery(MethodCallExpression methodCallExpression)
270263
}
271264
else if (arguments.Length == 2)
272265
{
266+
var itemSerializationInfoProvider = serializationInfo.Serializer as IBsonItemSerializationInfoProvider;
267+
if (itemSerializationInfoProvider == null)
268+
{
269+
return null;
270+
}
271+
272+
var itemSerializationInfo = itemSerializationInfoProvider.GetItemSerializationInfo();
273+
if (itemSerializationInfo == null)
274+
{
275+
return null;
276+
}
277+
273278
if (!(itemSerializationInfo.Serializer is IBsonMemberSerializationInfoProvider))
274279
{
275280
var message = string.Format("Any is only support for items that serialize into documents. The current serializer is {0} and must implement {1} for participation in Any queries.",
@@ -1506,8 +1511,11 @@ private BsonSerializationInfo GetSerializationInfo(Expression expression)
15061511
if (parameterExpression != null)
15071512
{
15081513
IBsonSerializer serializer;
1509-
if(!_parameterSerializers.TryGetValue(parameterExpression, out serializer))
1514+
if (!_parameterSerializers.TryGetValue(parameterExpression, out serializer))
1515+
{
15101516
serializer = BsonSerializer.LookupSerializer(parameterExpression.Type);
1517+
}
1518+
15111519
return new BsonSerializationInfo(
15121520
null, // elementName
15131521
serializer,

DriverUnitTests/Linq/SelectQueryTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3053,7 +3053,7 @@ public void TestWhereDNotEquals11Not()
30533053
public void TestWhereDAAnyWithPredicate()
30543054
{
30553055
var query = from c in _collection.AsQueryable<C>()
3056-
where c.DA.Any(x => x.Z == 333)
3056+
where c.DA.Any(d => d.Z == 333)
30573057
select c;
30583058

30593059
var translatedQuery = MongoQueryTranslator.Translate(query);
@@ -3062,7 +3062,7 @@ where c.DA.Any(x => x.Z == 333)
30623062
Assert.AreSame(typeof(C), translatedQuery.DocumentType);
30633063

30643064
var selectQuery = (SelectQuery)translatedQuery;
3065-
Assert.AreEqual("(C c) => Enumerable.Any<D>(c.DA, (D x) => (x.Z == 333))", ExpressionFormatter.ToString(selectQuery.Where));
3065+
Assert.AreEqual("(C c) => Enumerable.Any<D>(c.DA, (D d) => (d.Z == 333))", ExpressionFormatter.ToString(selectQuery.Where));
30663066
Assert.IsNull(selectQuery.OrderBy);
30673067
Assert.IsNull(selectQuery.Projection);
30683068
Assert.IsNull(selectQuery.Skip);

0 commit comments

Comments
 (0)