C# 数组的基础用法
常规操作之笔记摘要!!
C#基础知识之事务的用法
using (var _trans = new TransactionScope()){
_trans.Complete();//提交事务
_trans.Dispose();//报错时回撤事务
}
C#基础知识之GUID格式判定
string guidString = "123e4567-e89b-12d3-a456-426655440000";
if (Guid.TryParse(guidString, out Guid result))
{
Console.WriteLine("这是一个有效的GUID");
}
else
{
Console.WriteLine("这不是一个有效的GUID");
}
C#和DataTable的用法:例如:数据库查询了50条数据,但是根据代码中其他条件,只需要显示N条数据或者复制 DataTable的数据时使用
DataTable a = new DataTable();
DataTable b = new DataTable();
a.Merge(b); //复制 DataTable 的结构到新的 DataTable -->两个的数据结构必须保持一致
a = b.AsEnumerable().Take(1).CopyToDataTable();//作用:把 DataTable 的第一条数据复制到新的 DataTable 中-->Take()的值必须是 <=DataTable的行数
C#实体类使用反射设置属性值给实体类赋值
参考一:
NullifyDateTimeIfMatch(list);----调用
protected static void NullifyDateTimeIfMatch<T>(IEnumerable<T> items, DateTime? targetDate = default)
{
if (items == null) return;
if (targetDate == default) targetDate = new DateTime(1900, 1, 1);
foreach (var item in items)
{
if (item == null) continue;
var properties = item.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var property in properties)
{
// 检查是否为 DateTime 或 DateTime? 类型
if (property.PropertyType == typeof(DateTime) || property.PropertyType == typeof(DateTime?))
{
var value = property.GetValue(item)!.ToDateTime();
if (value.HasValue && targetDate.HasValue)
{
if (value.Value.Date == targetDate.Value.Date)
{
property.SetValue(item, null);
}
}
}
}
}
}
参考二:
var a = new 实体类();
var b = a.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
foreach (var item in b)
{
item.SetValue(item,null);
}
序列化和反序列化
JsonConvert.SerializeObject()--->将对象转换为JSON格式
JsonConvert.DeserializeObject()--->将 JSON 字符串转换为对象
数组的基础用法
1、C# 中数组数据排序时,字段对应的先后循序
主要排序(OrderBy), 次要排序(ThenByDescending(降) ,ThenBy(升))
list.OrderBy(t => t.字段).ThenByDescending(t => t.字段).ThenBy(t => t.字段))
2、将字符串分割成数组,并对比输出
string a = "1,2,3,4,5";
string b = "1,2,5,6";
// 将字符串分割成数组
var arrayA = a.Split(',');
var arrayB = b.Split(',');
// 使用 LINQ 的 Except 方法找出在 b 中但不在 a 中的元素
var result = arrayB.Except(arrayA);
// 将结果转换回字符串
string finalResult = string.Join(",", result);
Dictionary的用法
定义实体:
public class KeyValue : Dictionary<string, object> { }
数组:
var KeyValueList = new List<KeyValue>();
//自定义对象数据
var Info = new KeyValue(){
{"aa",值}
}
//动态添加
Info[列]=值;
Info:{
"aa":'值'
}
KeyValueList:[{},{},{}]
键值对数组的用法
c# 自定义数组用法:
var a= new List<object>{
new {Key='', Value=''},
new {Key='', Value=''}
}
List<object> list = new List<object>();
var item = new System.Dynamic.ExpandoObject() as IDictionary<string, object>;
item["aa"] ="bb";
list.Add(item);
var b=new JObject{
{"名称",值},
{"名称",值}
}.ToString();
最终结果:{"名称":"值","名称":"值"}
ExpandoObject的用法,类似于Dictionary,区别是不需要定义类
dynamic data = new ExpandoObject();
data.sss = "";//对象格式
//以下是数组格式
dynamic list = new List<ExpandoObject>();
dynamic obj = new ExpandoObject();
obj.a = ""; obj.b = "";
list.Add(obj);
data.list = list;
[[1,2,3],[1,2,3]]---->格式的数据实现
List<List<string>> aaa = new List<List<string>>();
List<string> bbb = new List<string>();
foreach (var c in ccc)
{
bbb.Add(c.值);
}
aaa.Add(subList);
JSON: System.Text.Json.JsonSerializer.Serialize(aaa);
根据前端JSON格式,将前端字段映射到后端字段并存储
[{"key":"sgdwId","value":"/"}]
1. 定义带字段映射的实体类
public class YpData
{
// 数据库字段映射字典
private static readonly Dictionary<string, string> FieldMap = new()
{
{"单位", "sgdwId"}
};
// 动态数据存储
public Dictionary<string, string> Data { get; } = new();
// 数据库字段属性代理
public string this[string fieldName]
{
get => FieldMap.TryGetValue(fieldName, out var jsonKey)
&& Data.TryGetValue(jsonKey, out var val) ? val : null;
set
{
if (FieldMap.TryGetValue(fieldName, out var jsonKey))
Data[jsonKey] = value;
}
}
}
2. JSON反序列化与数据填充
public static YpData ParseFromJson(string json)
{
var data = new YpData();
var keyValuePairs = JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(json);
foreach (var kvp in keyValuePairs)
{
if (kvp.TryGetValue("key", out var key) &&
kvp.TryGetValue("value", out var value))
{
data.Data[key] = string.IsNullOrEmpty(value) ? null : value;
}
}
return data;
}
3. 数据库字段访问示例
var json = "[{\"key\":\"sgdwId\",\"value\":\"中铁集团\"}, ...]";
var entity = ParseFromJson(json);
// 通过数据库字段名获取值
Console.WriteLine(entity["单位"]); // 输出:中铁集团
// 通过数据库字段名设置值
entity["日期"] = "2023-05-01";
Console.WriteLine(entity.Data["bprqId"]); // 输出:2023-05-01

浙公网安备 33010602011771号