Skip to content
推广您的产品

扩展方法

命名空间:ZhonTai.Common.Extensions

提供 DateTimeListEnumobject 等类型的常用扩展方法。

DateTimeExtension 日期时间扩展

应用场景

  • 时间戳与 DateTime 互转
  • 获取中文星期

使用示例

csharp
using ZhonTai.Common.Extensions;

// DateTime 转时间戳(秒级)
var timestamp = DateTime.Now.ToTimestamp();
// 1700000000

// DateTime 转时间戳(毫秒级)
var timestampMs = DateTime.Now.ToTimestamp(milliseconds: true);
// 1700000000000

// 获取中文星期
var week = DateTime.Now.GetWeekName();
// "周一"

ListExtension 列表扩展

应用场景

  • 平级数据转树形结构(菜单、组织架构)
  • 树形结构转平级列表
  • 列表深度克隆

使用示例

csharp
using ZhonTai.Common.Extensions;

// 平级列表转树形结构
var tree = flatList.ToTree(
    rootWhere: (parent, child) => parent == null && child.ParentId == 0,
    childsWhere: (parent, child) => parent.Id == child.ParentId,
    addChilds: (parent, childs) => parent.Children = childs.ToList()
);

// 树形转平级列表
var flatList = tree.ToPlainList(x => x.Children);

// 深度克隆列表
var cloned = list.Clone();

EnumExtension 枚举扩展

应用场景

  • 获取枚举的 [Description] 特性值
  • 枚举转下拉选项列表

使用示例

csharp
using ZhonTai.Common.Extensions;

public enum Status
{
    [Description("启用")]
    Enabled = 1,
    [Description("禁用")]
    Disabled = 2
}

// 获取枚举描述
var desc = Status.Enabled.ToDescription();
// "启用"

// 获取枚举名称+描述
var nameDesc = Status.Enabled.ToNameWithDescription();
// "Enabled(启用)"

// 枚举转数值
var value = Status.Enabled.ToInt64();
// 1

// 枚举转下拉列表
var list = Status.Enabled.ToList();
// [{"Label": "启用", "Value": 1}, {"Label": "禁用", "Value": 2}]

// 泛型方式(不需要实例)
var list2 = EnumExtension.ToList<Status>();

UtilConvertExtension 类型转换扩展

应用场景

  • object 安全转换为各种类型
  • 数据库字段值转换
  • 字节数组与 16 进制/Base64 互转

使用示例

csharp
using ZhonTai.Common.Extensions;

object value = "123";

// 基础类型转换
var i = value.ToInt();        // 123
var l = value.ToLong();       // 123
var f = value.ToFloat();      // 123.0
var d = value.ToDouble();     // 123.0
var dec = value.ToDecimal();  // 123
var b = value.ToBool();       // false
var date = value.ToDateTime();

// 带默认值的转换
var money = "abc".ToMoney(0.0);        // 0.0
var str = null.ToString("默认值");      // "默认值"

// 保留小数位
var d2 = "3.14159".ToDouble(2);  // 3.14

// byte[] 转换
var bytes = new byte[] { 0x12, 0x34 };
var hex = bytes.ToHex();        // "1234"(默认小写)
var hex2 = bytes.ToHex(false);  // "1234"(大写)
var b64 = bytes.ToBase64();     // "EjQ="

// 16进制字符串转 byte[]
var bytes2 = "1234".HexToBytes();

// 时间戳转 DateTime
var dt = 1700000000L.ToDateTime();