Skip to content

Instantly share code, notes, and snippets.

@leandromoh
Last active August 29, 2022 19:59
Show Gist options
  • Save leandromoh/4202cb28dddf63627269eb161f911d31 to your computer and use it in GitHub Desktop.
Save leandromoh/4202cb28dddf63627269eb161f911d31 to your computer and use it in GitHub Desktop.
SetFilterDefinition mongo
private FilterDefinition<EnumTeste> SetFilterDefinition<T>(FilterDefinition<EnumTeste> filters, string propertyName, IEnumerable<T> olds)
where T : struct, Enum
{
var bson = filters.RenderToBsonDocument();
if (bson.Contains(propertyName) is false)
return filters;
var asInteger = (T)(object)bson[propertyName].AsInt32;
var isOldEnum = olds.Contains(asInteger);
if (isOldEnum is false)
return filters;
bson.Remove(propertyName);
var strg = asInteger.ToString();
var fi = new FilterDefinitionBuilder<object>();
var filterTemp = fi.Or(fi.Eq(propertyName, strg), fi.Eq(propertyName, asInteger));
var bson2 = filterTemp.RenderToBsonDocument();
bson.AddRange(bson2);
return bson;
}
// https://stackoverflow.com/a/32146281
public static BsonDocument RenderToBsonDocument<T>(this FilterDefinition<T> filter)
{
var serializerRegistry = BsonSerializer.SerializerRegistry;
var documentSerializer = serializerRegistry.GetSerializer<T>();
return filter.Render(documentSerializer, serializerRegistry);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment