mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-24 18:04:52 +08:00
131 lines
5.4 KiB
C#
131 lines
5.4 KiB
C#
using SqlSugar;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace OrmTest
|
|
{
|
|
public class Demo1_Queryable
|
|
{
|
|
|
|
public static void Init()
|
|
{
|
|
ConditionScreening();
|
|
Async();
|
|
}
|
|
|
|
private static void ConditionScreening()
|
|
{
|
|
Console.WriteLine("");
|
|
Console.WriteLine("#### Condition Screening Start ####");
|
|
|
|
SqlSugarClient db = GetInstance();
|
|
|
|
/*** By expression***/
|
|
|
|
//id=@id
|
|
var list = db.Queryable<Order>().Where(it => it.Id == 1).ToList();
|
|
//id=@id or name like '%'+@name+'%'
|
|
var list2 = db.Queryable<Order>().Where(it => it.Id == 1 || it.Name.Contains("jack")).ToList();
|
|
|
|
|
|
//Create expression
|
|
var exp = Expressionable.Create<Order>()
|
|
.And(it => it.Id == 1)
|
|
.Or(it => it.Name.Contains("jack")).ToExpression();
|
|
var list3 = db.Queryable<Order>().Where(exp).ToList();
|
|
|
|
|
|
/*** By sql***/
|
|
|
|
//id=@id
|
|
var list4 = db.Queryable<Order>().Where("id=@id", new { id = 1 }).ToList();
|
|
//id=@id or name like '%'+@name+'%'
|
|
var list5 = db.Queryable<Order>().Where("id=@id or name like '%'+@name+'%' ",new { id=1,name="jack"}).ToList();
|
|
|
|
|
|
|
|
/*** By dynamic***/
|
|
|
|
//id=1
|
|
var conModels = new List<IConditionalModel>();
|
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1" });//id=1
|
|
var student = db.Queryable<Order>().Where(conModels).ToList();
|
|
|
|
//Complex use case
|
|
List<IConditionalModel> Order = new List<IConditionalModel>();
|
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1" });//id=1
|
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Like, FieldValue = "1" });// id like '%1%'
|
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.IsNullOrEmpty });
|
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.In, FieldValue = "1,2,3" });
|
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.NotIn, FieldValue = "1,2,3" });
|
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.NoEqual, FieldValue = "1,2,3" });
|
|
conModels.Add(new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.IsNot, FieldValue = null });// id is not null
|
|
|
|
conModels.Add(new ConditionalCollections()
|
|
{
|
|
ConditionalList = new List<KeyValuePair<WhereType, SqlSugar.ConditionalModel>>()// (id=1 or id=2 and id=1)
|
|
{
|
|
//new KeyValuePair<WhereType, ConditionalModel>( WhereType.And ,new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "1" }),
|
|
new KeyValuePair<WhereType, ConditionalModel> (WhereType.Or,new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "2" }),
|
|
new KeyValuePair<WhereType, ConditionalModel> ( WhereType.And,new ConditionalModel() { FieldName = "id", ConditionalType = ConditionalType.Equal, FieldValue = "2" })
|
|
}
|
|
});
|
|
var list6 = db.Queryable<Order>().Where(conModels).ToList();
|
|
|
|
/*** Conditional builder ***/
|
|
|
|
// use whereif
|
|
string name = "";
|
|
int id =1;
|
|
var query = db.Queryable<Order>()
|
|
.WhereIF(!string.IsNullOrEmpty(name), it => it.Name.Contains(name))
|
|
.WhereIF(id > 0, it => it.Id == id).ToList();
|
|
//clone new Queryable
|
|
var query2 = db.Queryable<Order>().Where(it => it.Id == 1);
|
|
var list7 = query2.Clone().Where(it => it.Name == "jack").ToList();//id=1 and name = jack
|
|
var list8 = query2.Clone().Where(it => it.Name == "tom").ToList();//id=1 and name = tom
|
|
|
|
Console.WriteLine("#### Condition Screening End ####");
|
|
|
|
|
|
|
|
}
|
|
|
|
private static void Async()
|
|
{
|
|
Console.WriteLine("");
|
|
Console.WriteLine("#### Async Start ####");
|
|
|
|
SqlSugarClient db = GetInstance();
|
|
var task1 = db.Queryable<Order>().FirstAsync();
|
|
var task2 = db.Queryable<Order>().Where(it => it.Id == 1).ToListAsync();
|
|
|
|
task1.Wait();
|
|
task2.Wait();
|
|
|
|
Console.WriteLine("#### Async End ####");
|
|
}
|
|
|
|
private static SqlSugarClient GetInstance()
|
|
{
|
|
return new SqlSugarClient(new ConnectionConfig()
|
|
{
|
|
DbType = DbType.SqlServer,
|
|
ConnectionString = Config.ConnectionString,
|
|
InitKeyType = InitKeyType.Attribute,
|
|
IsAutoCloseConnection = true,
|
|
AopEvents = new AopEvents
|
|
{
|
|
OnLogExecuting = (sql, p) =>
|
|
{
|
|
Console.WriteLine(sql);
|
|
Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value)));
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|