Viyi.Util.Build/Builder/EnumerableMaxMinBuilder.cs
(完整代码) 1KBnamespace Viyi.Util.Build.Builder;
internal class EnumerableMaxMinBuilder : Builder {
static readonly string[] Types = new[] {
"int", "uint", "short", "ushort",
"long", "ulong", "byte", "sbyte",
"decimal", "float", "double"
};
public EnumerableMaxMinBuilder() : base(@"Linq\Enumerable_MM.gen.cs") {
}
protected override void WriteHeader() {
base.WriteHeader();
WriteLine(@"
using System;
using System.Collections.Generic;
using System.Linq;
#if NETSTANDARD2_0 || NETSTANDARD2_1
namespace System.Linq;
public static partial class EnumerableExtensions
{");
}
protected override void WriteFooter() {
WriteLine(@"
}
#endif");
base.WriteFooter();
}
protected override void WriteContent() {
foreach (var type in Types) {
WriteLine(@$"
public static T MaxBy<T>(this IEnumerable<T> source, Func<T, {type}> selector) {{
return source.Aggregate((last, next) =>
selector(next) > selector(last) ? next : last
);
}}
public static T MinBy<T>(this IEnumerable<T> source, Func<T, {type}> selector) {{
return source.Aggregate((last, next) =>
selector(next) < selector(last) ? next : last
);
}}");
}
}
}
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
