Comments (9)
Looks quite good. Incredible how fast you implemented that 😯
So you decided to create DynamicTypes out of each element in the JSONArray and then query on it.
I guess because it's the easiest way todo right now. Nice to see.
from system.linq.dynamic.core.
Thanks for the idea.
A way to implement this is to create projects which depend on System.Text.Json and Newtonssoft.Json which provide extension methods like Where
on JsonDocument and JObject.
from system.linq.dynamic.core.
@StefH you mean something like:
public static IQueryable<T> Where(this IQueryable<T> source, string expression){
// TODO: parse expression
// TODO: Rebuild all Property access expression to access `GetProperty(propertName)`
// TODO: return result
}
from system.linq.dynamic.core.
More like this:
public static IQueryable<T> Where(this JsonDocument source, string expression)
{
}
Or
public static IQueryable<T> Where(this IObject source, string expression)
{
}
from system.linq.dynamic.core.
but shouldn't the base of the Extension method be something enumerable?
Also a JsonDocument can also be {}
, that would result in an error I guess.
Shouldn't it be more like:
public static IQueryable<ArrayEnumerator> Where(this ArrayEnumerator source, string expression)
{
}
Then you can access over Current
the current JsonElement
and test the expression.
and on the user code side it would look like:
var jsonDocument = JsonDocument.Parse(@"[
{
""first"": 1,
""City"": ""Paris"",
""third"": ""012-04-23T18:25:43.511Z""
}]");
if(jsonDocument.RootElement.ValueKind != JsonValueKind.Array){
throw new Exception("Must be an array");
}
jsonDocument.RootElement.EnumerateArray().Where("City ==\"Paris\"");
That would also allow us to use the extension method to use it inside of a JSON document.
from system.linq.dynamic.core.
Hm I'm also not sure if the extension of Where
is the correct idea. If I understand it correctly that would mean that we need to reimplement the ExpressionParser
for it. Wouldn't it be better to allow, that the currently private methods of the ExpressionParser
can be overwritten? In this case the ParseMemberAccess
method. Then we could create kinda easy second project and make a special implementation of ParseMemberAccess
for JsonElement
.
But maybe I don't understand the project structure well enough jet.
from system.linq.dynamic.core.
#791 WIP...
from system.linq.dynamic.core.
I'm adding all methods and also working on System.Text.Json implementation. Can you take a look at the PR (WIP)?
from system.linq.dynamic.core.
Yes I will review today :)
from system.linq.dynamic.core.
Related Issues (20)
- SelectMany collectionSelectorArgs not allowing context.Set<>() HOT 1
- C# Entity Framework Core - OrderBy and Where don't work with `[ComplexType]` HOT 6
- try to call function inside select HOT 3
- Basic performance consideration question HOT 1
- try to parse lambda with function inside .
- Performance Issue with EF Core 8.0 and Microsoft.EntityFrameworkCore.DynamicLinq Package HOT 8
- Question About Parameters HOT 4
- Parser interpreting the two consecutive escape sequences \"\" as a single escape sequence HOT 11
- query generated with dynamic linq not parse parameter linq as parameter sql !!! HOT 1
- .NET 8 (and possible all non-NETSTANDARD and higher versions) attempt to load EF 6 types HOT 16
- Add ParsingConfig option to support single quotes in place of double quotes
- Failure in ParseArgumentList when using lambda filter on list of dictionaries HOT 1
- DynamicExpressionParser.ParseLambda regressions in v1.3.10
- Error with 'Equals' together with other parameters HOT 4
- ExpressionParser finds Types from IEnumerable instead of IQueryable (breaks Code) (worked in 1.3.9) HOT 1
- Updating to 1.3.13 - No property or field 'XXXXX' exists in type 'Char'
- Issue with Where() method when filtering multiple string properties while using ToLower() HOT 1
- >= 1.3.3 Slow First Dynamic Select HOT 2
- Error when parsing a nested object initialization
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from system.linq.dynamic.core.