Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dictionary type supports .? #595

Open
zhenlei520 opened this issue Mar 15, 2024 · 4 comments
Open

Dictionary type supports .? #595

zhenlei520 opened this issue Mar 15, 2024 · 4 comments

Comments

@zhenlei520
Copy link

If I introduce a value of type Dictionary<string,string>, I can use . in Expression to get the value of the specified key.

For example:
My rule engine type is

{
     public Dictionary<string, string> Dimensions { get; set; }
}

where the value of Dimensions is

{"name":"tony"}

According to my understanding Expression should be

metadata.Dimensions.Any(d=>d.Key=="snakeTest" && d.Value=="tony")

However, during actual use, I found that it is also feasible to write as follows
metadata.Dimensions.name == "tony"

Why is this happening? Does RulesEngine do any special processing?

@asulwer
Copy link

asulwer commented Jun 21, 2024

you need to register IEnumerable so that Any can work

@zhenlei520
Copy link
Author

zhenlei520 commented Aug 23, 2024

you need to register IEnumerable so that Any can work

Thanks for your reply. I'm just curious about why you can use . directly when the data type is Dictionary. For example, if the parameter of type Dictionary<string, string> is metadata, and the value of the key is name, you can get the corresponding value through metadata.name. This is inconsistent with C# syntax.

@asulwer
Copy link

asulwer commented Aug 23, 2024

(Any)[https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.any?view=net-8.0] needs to be registered to be used. similar to a custom function

@zhenlei520
Copy link
Author

(Any)[https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.any?view=net-8.0] needs to be registered to be used. similar to a custom function

You misunderstood what I meant. I didn't want to know how to use the Any method, but why metadata.name can be used to get the value of the key name in the array.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants