From 812c5778b1e0280ce0a82d8985efdc24f367f9cd Mon Sep 17 00:00:00 2001 From: xieguigang Date: Sat, 16 Jan 2021 16:10:57 +0800 Subject: [PATCH] linq keyword expression --- .../Expressions/Keywords/OutputProjection.vb | 22 +++++++++++++++++++ .../{ => Keywords}/SymbolDeclare.vb | 0 .../Expressions/{ => Keywords}/WhereFilter.vb | 0 LINQ/LINQ/LINQ.vbproj | 5 +++-- 4 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 LINQ/LINQ/Interpreter/Expressions/Keywords/OutputProjection.vb rename LINQ/LINQ/Interpreter/Expressions/{ => Keywords}/SymbolDeclare.vb (100%) rename LINQ/LINQ/Interpreter/Expressions/{ => Keywords}/WhereFilter.vb (100%) diff --git a/LINQ/LINQ/Interpreter/Expressions/Keywords/OutputProjection.vb b/LINQ/LINQ/Interpreter/Expressions/Keywords/OutputProjection.vb new file mode 100644 index 0000000..7eefa79 --- /dev/null +++ b/LINQ/LINQ/Interpreter/Expressions/Keywords/OutputProjection.vb @@ -0,0 +1,22 @@ +Imports LINQ.Runtime +Imports Microsoft.VisualBasic.ComponentModel.DataSourceModel + +Namespace Interpreter.Expressions + + Public Class OutputProjection : Inherits Expression + + Public Property fields As NamedValue(Of Expression)() + + Sub New(fields As IEnumerable(Of NamedValue(Of Expression))) + Me.fields = fields.ToArray + End Sub + + Public Overrides Function Exec(env As Environment) As Object + Throw New NotImplementedException() + End Function + + Public Overrides Function ToString() As String + Return $"new {{{fields.Select(Function(a) $"{a.Name} = {a.Value}").JoinBy(", ")}}}" + End Function + End Class +End Namespace \ No newline at end of file diff --git a/LINQ/LINQ/Interpreter/Expressions/SymbolDeclare.vb b/LINQ/LINQ/Interpreter/Expressions/Keywords/SymbolDeclare.vb similarity index 100% rename from LINQ/LINQ/Interpreter/Expressions/SymbolDeclare.vb rename to LINQ/LINQ/Interpreter/Expressions/Keywords/SymbolDeclare.vb diff --git a/LINQ/LINQ/Interpreter/Expressions/WhereFilter.vb b/LINQ/LINQ/Interpreter/Expressions/Keywords/WhereFilter.vb similarity index 100% rename from LINQ/LINQ/Interpreter/Expressions/WhereFilter.vb rename to LINQ/LINQ/Interpreter/Expressions/Keywords/WhereFilter.vb diff --git a/LINQ/LINQ/LINQ.vbproj b/LINQ/LINQ/LINQ.vbproj index 33105a0..cf7a46e 100644 --- a/LINQ/LINQ/LINQ.vbproj +++ b/LINQ/LINQ/LINQ.vbproj @@ -129,8 +129,9 @@ - - + + +