[#251] 修复表达式值获取

This commit is contained in:
xuejiaming 2023-09-01 08:30:54 +08:00
parent b9e1537118
commit dcced0a7b8
3 changed files with 12 additions and 2 deletions

View File

@ -194,6 +194,14 @@ namespace Sample.MySql.Controllers
name = o.Key.Name, name = o.Key.Name,
count = o.Count() count = o.Count()
}).ToListAsync(); }).ToListAsync();
var asyncEnumerator = _defaultTableDbContext.Set<SysTest>().AsAsyncEnumerable();
await foreach (var sysTest in asyncEnumerator)
{
await Task.Delay(1000);
Console.WriteLine("1");
}
var x=await (from ut in _defaultTableDbContext.Set<SysTest>() var x=await (from ut in _defaultTableDbContext.Set<SysTest>()
from uu in _defaultTableDbContext.Set<SysUserMod>() from uu in _defaultTableDbContext.Set<SysUserMod>()
where ut.Id == uu.Id where ut.Id == uu.Id

View File

@ -45,7 +45,7 @@ namespace ShardingCore.Core.Internal.Visitors
case ConstantExpression e: case ConstantExpression e:
return e.Value; return e.Value;
case NewExpression e: case NewExpression e:
return e.Constructor?.Invoke(e.Arguments.Select(a => ((ConstantExpression)a).Value).ToArray()); return e.Constructor?.Invoke(e.Arguments.Select(GetExpressionValue).ToArray());
case MemberExpression e when e.Member is FieldInfo field: case MemberExpression e when e.Member is FieldInfo field:
return field.GetValue( return field.GetValue(

View File

@ -95,8 +95,10 @@ namespace ShardingCore.CommonTest
var times2 = new []{queryTime,queryTime2}; var times2 = new []{queryTime,queryTime2};
var obj1 = new {time=new DateTime(2022, 1, 2)}; var obj1 = new {time=new DateTime(2022, 1, 2)};
var dateTime = (DateTime?)new DateTime(2022, 1, 2); var dateTime = (DateTime?)new DateTime(2022, 1, 2);
var day = 2;
var queryables=new List<IQueryable<TestTimeEntity>>() var queryables=new List<IQueryable<TestTimeEntity>>()
{ {
new List<TestTimeEntity>().AsQueryable().Where(o=>o.Time== new DateTime(2022, 1, day)),
new List<TestTimeEntity>().AsQueryable().Where(o=>o.Time== dateTime), new List<TestTimeEntity>().AsQueryable().Where(o=>o.Time== dateTime),
new List<TestTimeEntity>().AsQueryable().Where(o=>dateTime==o.Time ), new List<TestTimeEntity>().AsQueryable().Where(o=>dateTime==o.Time ),
new List<TestTimeEntity>().AsQueryable().Where(o=>o.Time== new DateTime(2022, 1, 2)), new List<TestTimeEntity>().AsQueryable().Where(o=>o.Time== new DateTime(2022, 1, 2)),