LINQ
一. Where :选择行.
IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
IEnumerable<TSource> Where<TSource>(f => 一个条件表达式)
public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);
Take : 选择行
a.task(5) //选择前5行.
例:
List.Where(f => typeof(Csla.Core.IPropertyInfo).IsAssignableFrom(f.FieldType))
红色部分既可以是一条语句,也可以是一段代码块{…},代码块里面有一个返回值. List中有过少个元素.
则这条语句/代码块就执行多少此.
里面的表达式不不会立即执行,只是什么时候需要使用返回值的时候才执行ladm表达式.
static void Main(string[] args)
{
List<int> nList = new List<int>();
IEnumerable<int> sFilter;
int nCount;
nList.Add(1);
nList.Add(2);
nList.Add(3);
nList.Add(4);
nList.Add(5);
nList.Add(6);
nList.Add(7);
nList.Add(8);
nList.Add(9);
nList.Add(10);
nList.Add(11);
sFilter = nList.Where(f =>
{ //有多少个元素,这个代码块就执行多少此.
if (f > 5)
{
if (f.Equals(10))
{
return true;
}
}
else
{
return false;
}
return false;
});
nCount = sFilter.Count(); //这里才开始执行Where中的代码块.
}
二.Select //选择列.
public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector);
IEnumerable<CSLAPropertyInfo>.Select(f=>{代码块…})
private static IEnumerable<CSLAPropertyInfo> LoadFromType(Type type)
{
var staticFields = type.GetFields(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
return staticFields.Where(f => typeof(Csla.Core.IPropertyInfo).IsAssignableFrom(f.FieldType))
.Select(f =>
{
bool isChild = false;
var property = f.GetValue(null) as Csla.Core.IPropertyInfo;
//判断是不是孩子对象
var fieldType = f.FieldType;
if (fieldType.IsGenericType && fieldType.GetGenericTypeDefinition() == typeof(PropertyInfo<>))
{
var argType = fieldType.GetGenericArguments()[0];
while (argType.BaseType != null)
{
if (argType.IsGenericType && argType.GetGenericTypeDefinition() == typeof(GBusinessListBase<,>))
{
isChild = true;
break;
}
argType = argType.BaseType;
}
}
return new CSLAPropertyInfo(property, isChild);
});
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!