mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2026-01-19 17:51:36 +08:00
Support it.XX??"value"
This commit is contained in:
@@ -419,10 +419,11 @@ namespace OrmTest.Demo
|
||||
Name = x.Name == null ? "1" : "2"
|
||||
}).ToList();
|
||||
var test29 = db.Queryable<Student>().Where(it=>it.Id%1==0).ToList();
|
||||
//var test29 = db.Queryable<Student>().Select(x => new Student
|
||||
//{
|
||||
// Name = x.Name??"a"
|
||||
//}).ToList();
|
||||
var test30 = db.Queryable<Student>().Select(x => new Student
|
||||
{
|
||||
Name = x.Name ?? "a"
|
||||
}).ToList();
|
||||
var test31 = db.Queryable<Student>().Where(it=>(it.Name??"a")=="a").ToList();
|
||||
}
|
||||
public static void Page()
|
||||
{
|
||||
|
||||
@@ -44,6 +44,10 @@ namespace SqlSugar
|
||||
{
|
||||
return new LambdaExpressionResolve(parameter);
|
||||
}
|
||||
else if (expression is BinaryExpression && expression.NodeType == ExpressionType.Coalesce)
|
||||
{
|
||||
return new CoalesceResolveItems(parameter);
|
||||
}
|
||||
else if (expression is BinaryExpression)
|
||||
{
|
||||
return new BinaryExpressionResolve(parameter);
|
||||
@@ -129,7 +133,7 @@ namespace SqlSugar
|
||||
if (parameter.BaseExpression is BinaryExpression || parameter.BaseExpression == null)
|
||||
{
|
||||
var oppoSiteExpression = isLeft == true ? parameter.BaseParameter.RightExpression : parameter.BaseParameter.LeftExpression;
|
||||
if (parameter.CurrentExpression is MethodCallExpression||parameter.CurrentExpression is ConditionalExpression)
|
||||
if (parameter.CurrentExpression is MethodCallExpression||parameter.CurrentExpression is ConditionalExpression||parameter.CurrentExpression.NodeType==ExpressionType.Coalesce)
|
||||
{
|
||||
var appendValue = value;
|
||||
if (this.Context.Result.Contains(ExpressionConst.FormatSymbol))
|
||||
@@ -438,7 +442,7 @@ namespace SqlSugar
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (item is MethodCallExpression|| item is UnaryExpression||item is ConditionalExpression)
|
||||
else if (item is MethodCallExpression|| item is UnaryExpression||item is ConditionalExpression|| item.NodeType==ExpressionType.Coalesce)
|
||||
{
|
||||
this.Expression = item;
|
||||
this.Start();
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq.Expressions;
|
||||
using System.Text;
|
||||
|
||||
namespace SqlSugar
|
||||
{
|
||||
public class CoalesceResolveItems : MethodCallExpressionResolve
|
||||
{
|
||||
public CoalesceResolveItems(ExpressionParameter parameter) : base(parameter)
|
||||
{
|
||||
string name = "IsNull";
|
||||
var express = base.Expression as BinaryExpression;
|
||||
var args = new List<Expression>() {
|
||||
express.Left,
|
||||
express.Right
|
||||
};
|
||||
var isLeft = parameter.IsLeft;
|
||||
MethodCallExpressionModel model = new MethodCallExpressionModel();
|
||||
model.Args = new List<MethodCallExpressionArgs>();
|
||||
switch (this.Context.ResolveType)
|
||||
{
|
||||
case ResolveExpressType.WhereSingle:
|
||||
case ResolveExpressType.WhereMultiple:
|
||||
Check.Exception(name == "GetSelfAndAutoFill", "SqlFunc.GetSelfAndAutoFill can only be used in Select.");
|
||||
base.Where(parameter, isLeft, name, args, model);
|
||||
break;
|
||||
case ResolveExpressType.SelectSingle:
|
||||
case ResolveExpressType.SelectMultiple:
|
||||
case ResolveExpressType.Update:
|
||||
base.Select(parameter, isLeft, name, args, model);
|
||||
break;
|
||||
case ResolveExpressType.FieldSingle:
|
||||
case ResolveExpressType.FieldMultiple:
|
||||
base.Field(parameter, isLeft, name, args, model);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -90,6 +90,7 @@
|
||||
<Compile Include="ExpressionsToSql\CaseWhen\CaseWhen.cs" />
|
||||
<Compile Include="ExpressionsToSql\CaseWhen\CaseWhenResolve.cs" />
|
||||
<Compile Include="ExpressionsToSql\DbMethods\SqlFuncExternal.cs" />
|
||||
<Compile Include="ExpressionsToSql\ResolveItems\CoalesceResolveItems.cs" />
|
||||
<Compile Include="ExpressionsToSql\Subquery\Items\ISubOperation.cs" />
|
||||
<Compile Include="ExpressionsToSql\Subquery\Items\SubAnd.cs" />
|
||||
<Compile Include="ExpressionsToSql\Subquery\Items\SubCount.cs" />
|
||||
|
||||
Reference in New Issue
Block a user