前言
IQueryable的拓展方法,可以使用字符串的方式达到动态linq查询的目的
GitHub地址: https://github.com/zzzprojects/System.Linq.Dynamic.Core
新手入门文档:https://dynamic-linq.net/overview
在线示例文档:https://dynamic-linq.net/online-examples
官网地址:https://dynamic-linq.net/
提示:接下来演示使用方式和效果
一、添加引用
NuGet 添加System.Linq.Dynamic.Core
想要通过命令的方式 查看这里:(https://www.nuget.org/packages/System.Linq.Dynamic.Core/)
二、测试代码及效果
using System.Linq.Dynamic.Core;
using TestLinqDynamicCore;
Console.WriteLine("Hello, World!");
List<PeopleModel> peopleModels = new List<PeopleModel>();
for (int i = 0; i < 10; i++)
{
peopleModels.Add(
new PeopleModel()
{
Id = i,
Name = "XXX" + i,
Sex = (i % 2 > 0) ? "男" : "女"
}
);
}
var QYpeoples= peopleModels.AsQueryable();
#region 功能等价
var WhereValue = QYpeoples.Where("id>1");
//var WhereValue = QYpeoples.Where("id>@0", 1);
#endregion
foreach (var item in WhereValue)
{
Console.Write(item.Id + " ");
Console.Write(item.Name + " ");
Console.Write(item.Sex + " ");
Console.WriteLine();
//2 XXX2 女
//3 XXX3 男
//4 XXX4 女
//5 XXX5 男
//6 XXX6 女
//7 XXX7 男
//8 XXX8 女
//9 XXX9 男
}
List<int> range = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var rangeResult = range.AsQueryable().Select("it * it");
foreach (var item in rangeResult)
{
Console.WriteLine(item.ToString());
//1
//4
//9
//16
//25
//36
//49
//64
//81
//100
}
var WhereRideValue = QYpeoples.Select("id * id");
foreach (var item in WhereRideValue)
{
Console.WriteLine(item.ToString());
//0
//1
//4
//9
//16
//25
//36
//49
//64
//81
}
var SelectNew= QYpeoples.Select(x => "{UserName=" + x.Id + ", MyFirstName=" + x.Sex + "}");
foreach (var item in SelectNew)
{
Console.WriteLine(item.ToString());
//{ UserName = 0, MyFirstName = 女}
//{ UserName = 1, MyFirstName = 男}
//{ UserName = 2, MyFirstName = 女}
//{ UserName = 3, MyFirstName = 男}
//{ UserName = 4, MyFirstName = 女}
//{ UserName = 5, MyFirstName = 男}
//{ UserName = 6, MyFirstName = 女}
//{ UserName = 7, MyFirstName = 男}
//{ UserName = 8, MyFirstName = 女}
//{ UserName = 9, MyFirstName = 男}
}
var SelectName = QYpeoples.Select(x => x.Name);
foreach (var item in SelectName)
{
Console.WriteLine(item.ToString());
//XXX0
//XXX1
//XXX2
//XXX3
//XXX4
//XXX5
//XXX6
//XXX7
//XXX8
//XXX9
}
Console.ReadLine();
总结
官网相关文档中有更多的使用示例和方法哦