public static IEnumerable<int> Range(int start, int count) {
long max = ((long)start) + count - 1;
if (count < 0 || max > Int32.MaxValue) throw Error.ArgumentOutOfRange("count");
return RangeIterator(start, count);
}
static IEnumerable<int> RangeIterator(int start, int count) {
for (int i = 0; i < count; i++) yield return start + i;
}
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) {
if (source == null) throw Error.ArgumentNull("source");
if (predicate == null) throw Error.ArgumentNull("predicate");
if (source is Iterator<TSource>) return ((Iterator<TSource>)source).Where(predicate);
if (source is TSource[]) return new WhereArrayIterator<TSource>((TSource[])source, predicate);
if (source is List<TSource>) return new WhereListIterator<TSource>((List<TSource>)source, predicate);
return new WhereEnumerableIterator<TSource>(source, predicate);
}
public WhereEnumerableIterator(IEnumerable<TSource> source, Func<TSource, bool> predicate) {
this.source = source;
this.predicate = predicate;
}
/// <summary>
/// 提供对未指定数据类型的特定数据源的查询进行计算的功能。
/// </summary>
/// <filterpriority>2</filterpriority>
public interface IQueryable : IEnumerable
{
/// <summary>
/// 获取与 <see cref="T:System.Linq.IQueryable"/> 的实例关联的表达式目录树。
/// </summary>
///
/// <returns>
/// 与 <see cref="T:System.Linq.IQueryable"/> 的此实例关联的 <see cref="T:System.Linq.Expressions.Expression"/>。
/// </returns>
Expression Expression { get; }
/// <summary>
/// 获取在执行与 <see cref="T:System.Linq.IQueryable"/> 的此实例关联的表达式目录树时返回的元素的类型。
/// </summary>
///
/// <returns>
/// 一个 <see cref="T:System.Type"/>,表示在执行与之关联的表达式目录树时返回的元素的类型。
/// </returns>
Type ElementType { get; }
/// <summary>
/// 获取与此数据源关联的查询提供程序。
/// </summary>
///
/// <returns>
/// 与此数据源关联的 <see cref="T:System.Linq.IQueryProvider"/>。
/// </returns>
IQueryProvider Provider { get; }
}
public static IQueryable<TSource> Where<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate) {
if (source == null)
throw Error.ArgumentNull("source");
if (predicate == null)
throw Error.ArgumentNull("predicate");
return source.Provider.CreateQuery<TSource>(
Expression.Call(
null,
((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(typeof(TSource)),
new Expression[] { source.Expression, Expression.Quote(predicate) }
));
}
public static IQueryable<TResult> Select<TSource,TResult>(this IQueryable<TSource> source, Expression<Func<TSource, TResult>> selector) {
if (source == null)
throw Error.ArgumentNull("source");
if (selector == null)
throw Error.ArgumentNull("selector");
return source.Provider.CreateQuery<TResult>(
Expression.Call(
null,
((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(typeof(TSource), typeof(TResult)),
new Expression[] { source.Expression, Expression.Quote(selector) }
));
}
/// <summary>
/// 为参数验证提供有用的方法
/// </summary>
public static class ArgumentValidator
{
/// <summary>
/// 如果argumentToValidate为空,则抛出一个ArgumentNullException异常
/// </summary>
public static void ThrowIfNull(object argumentToValidate, string argumentName)
{
if (null == argumentName)
{
throw new ArgumentNullException("argumentName");
}
if (null == argumentToValidate)
{
throw new ArgumentNullException(argumentName);
}
}
/// <summary>
/// 如果argumentToValidate为空,则抛出一个ArgumentException异常
/// </summary>
public static void ThrowIfNullOrEmpty(string argumentToValidate, string argumentName)
{
ThrowIfNull(argumentToValidate, argumentName);
if (argumentToValidate == string.Empty)
{
throw new ArgumentException(argumentName);
}
}
/// <summary>
/// 如果condition为真,则抛出ArgumentException异常
/// </summary>
/// <param name="condition"></param>
/// <param name="msg"></param>
public static void ThrowIfTrue(bool condition, string msg)
{
ThrowIfNullOrEmpty(msg, "msg");
if (condition)
{
throw new ArgumentException(msg);
}
}
/// <summary>
/// 如果指定目录存在该文件则抛出FileNotFoundException异常
/// </summary>
/// <param name="fileSytemObject"></param>
/// <param name="argumentName"></param>
public static void ThrowIfDoesNotExist(FileSystemInfo fileSytemObject, String argumentName)
{
ThrowIfNull(fileSytemObject, "fileSytemObject");
ThrowIfNullOrEmpty(argumentName, "argumentName");
if (!fileSytemObject.Exists)
{
throw new FileNotFoundException("'{0}' not found".Fi(fileSytemObject.FullName));
}
}
public static string Fi(this string format, params object[] args)
{
return FormatInvariant(format, args);
}
/// <summary>
/// 格式化字符串和使用<see cref="CultureInfo.InvariantCulture">不变的文化</see>.
/// </summary>
/// <remarks>
/// <para>这应该是用于显示给用户的任何字符串时使用的“B”>“B”>“”。它意味着日志
///消息,异常消息,和其他类型的信息,不使其进入用户界面,或不会
///无论如何,对用户都有意义;).</para>
/// </remarks>
public static string FormatInvariant(this string format, params object[] args)
{
ThrowIfNull(format, "format");
return 0 == args.Length ? format : string.Format(CultureInfo.InvariantCulture, format, args);
}
/// <summary>
/// 如果时间不为DateTimeKind.Utc,则抛出ArgumentException异常
/// </summary>
/// <param name="argumentToValidate"></param>
/// <param name="argumentName"></param>
public static void ThrowIfNotUtc(DateTime argumentToValidate, String argumentName)
{
ThrowIfNullOrEmpty(argumentName, "argumentName");
if (argumentToValidate.Kind != DateTimeKind.Utc)
{
throw new ArgumentException("You must pass an UTC DateTime value", argumentName);
}
}
}
public static class EnumExtensions
{
/// <summary>
/// 获取名字
/// </summary>
/// <param name="e"></param>
/// <returns></returns>
public static string GetName(this Enum e)
{
return Enum.GetName(e.GetType(), e);
}
/// <summary>
/// 获取名字和值
/// </summary>
/// <param name="enumType">枚举</param>
/// <param name="lowerFirstLetter">是否转化为小写</param>
/// <returns></returns>
public static Dictionary<string, int> GetNamesAndValues( this Type enumType, bool lowerFirstLetter)
{
//由于扩展方法实际是对一个静态方法的调用,所以CLR不会生成代码对调用方法的表达式的值进行null值检查
ArgumentValidator.ThrowIfNull(enumType, "enumType");
//获取枚举名称数组
var names = Enum.GetNames(enumType);
//获取枚举值数组
var values = Enum.GetValues(enumType);
var d = new Dictionary<string, int>(names.Length);
for (var i = 0; i < names.Length; i++)
{
var name = lowerFirstLetter ? names[i].LowerFirstLetter() : names[i];
d[name] = Convert.ToInt32(values.GetValue(i));
}
return d;
}
/// <summary>
/// 转换为小写
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public static string LowerFirstLetter(this string s)
{
ArgumentValidator.ThrowIfNull(s, "s");
return char.ToLowerInvariant(s[0]) + s.Substring(1);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有