[#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,7 +194,15 @@ namespace Sample.MySql.Controllers
name = o.Key.Name,
count = o.Count()
}).ToListAsync();
var x=await (from ut in _defaultTableDbContext.Set<SysTest>()
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>()
from uu in _defaultTableDbContext.Set<SysUserMod>()
where ut.Id == uu.Id
select ut).FirstOrDefaultAsync();

View File

@ -45,7 +45,7 @@ namespace ShardingCore.Core.Internal.Visitors
case ConstantExpression e:
return e.Value;
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:
return field.GetValue(

View File

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