首页 > 其他分享 >集合扩展方法

集合扩展方法

时间:2024-09-05 21:54:07浏览次数:10  
标签:return string 扩展 Global list item 集合 方法 public

功能清单

        1.判断集合是否为Null

        2.判断集合是否不为Null

        3.判断集合是否有值

        4.拼接成字符串

        5.根据一个表达式去除重复

        6.LIST转DataTable

ToDataTable() 调用示例

从数据库查询出来的List<Model>数据导出成电子列表格式。 

Global.EAP_DataPath = string.Empty;
//焊接结果数据文件路径
var weldResultList = _serviceWeldResult.GetListByWhereExpr(t => t.MaterialsCode, Global.GlobalIns.MaterialsCodeCurrent);
if (weldResultList != null && weldResultList.Count > 0)
{
    //导出成文件
    var filePath = AppContext.BaseDirectory + @"WeldResultUpload\" + DateTime.Now.ToString("yyyyMMdd") + @"\" + Global.GlobalIns.MaterialsCodeCurrent + ".xlsx";
    if (filePath.CreateDirectoryByPath())
    {
        FileHelper.Export(weldResultList.ToDataTable(), filePath);
        Global.EAP_DataPath = filePath;
        //数据文件路径
        //Global.SecsServer.SetSvVal(EAPVariablesListEnum.DataPath.GetHashCode(), filePath);
        MessageHelper.ShowMsg("EAP上传焊接数据的模块码:" + Global.GlobalIns.MaterialsCodeCurrent + ",路径:" + Global.EAP_DataPath, method);
        //Global.SecsServer.SendEvent(EAPEventEnum.UploadData.GetHashCode());
    }
}
MessageHelper.ShowMsg("焊接结果数据发送给EAP完成", method);

源码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;

namespace ExtendMethods;

//
// 摘要:
//     集合扩展方法
public static class ListExtension
{
    //
    // 摘要:
    //     判断集合是否为Null
    //
    // 参数:
    //   list:
    //
    // 类型参数:
    //   T:
    public static bool IsNull<T>(this IEnumerable<T> list)
    {
        return list == null;
    }

    //
    // 摘要:
    //     判断集合是否不为Null
    //
    // 参数:
    //   list:
    //
    // 类型参数:
    //   T:
    public static bool IsNotNull<T>(this IEnumerable<T> list)
    {
        return list != null;
    }

    //
    // 摘要:
    //     判断集合是否有值
    //
    // 参数:
    //   list:
    //
    // 类型参数:
    //   T:
    public static bool IsHaveVal<T>(this IEnumerable<T> list)
    {
        if (list != null)
        {
            return list.Count() > 0;
        }

        return false;
    }

    //
    // 摘要:
    //     拼接成字符串
    //
    // 参数:
    //   list:
    //
    //   split:
    //     分隔筏
    public static string JoinToString(this IEnumerable<int> list, string split)
    {
        if (list != null)
        {
            return string.Join(split, list);
        }

        return string.Empty;
    }

    //
    // 摘要:
    //     拼接成字符串
    //
    // 参数:
    //   list:
    //
    //   split:
    //     分隔筏
    public static string JoinToString(this IEnumerable<string> list, string split)
    {
        if (list != null)
        {
            return string.Format("'{0}'", string.Join("'" + split + "'", list));
        }

        return string.Empty;
    }

    //
    // 摘要:
    //     根据一个表达式去除重复
    //
    // 参数:
    //   source:
    //     数据源集合
    //
    //   keySelector:
    //     过滤表达式
    //
    // 类型参数:
    //   TSource:
    //     数据源类型
    //
    //   TKey:
    //     过滤属性类型
    public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
    {
        HashSet<TKey> seenKeys = new HashSet<TKey>();
        foreach (TSource item in source)
        {
            if (seenKeys.Add(keySelector(item)))
            {
                yield return item;
            }
        }
    }

    //
    // 摘要:
    //     LIST转DataTable
    //
    // 参数:
    //   data:
    //
    // 类型参数:
    //   T:
    public static DataTable ToDataTable<T>(this IList<T> data)
    {
        DataTable dataTable = new DataTable();
        if (data != null && data.Count > 0)
        {
            Dictionary<string, string> dictionary = new Dictionary<string, string>();
            PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
            foreach (PropertyDescriptor item in properties)
            {
                string text = item.Name;
                if (!string.IsNullOrEmpty(item.Description))
                {
                    text = item.Description;
                }

                dataTable.Columns.Add(text, Nullable.GetUnderlyingType(item.PropertyType) ?? item.PropertyType);
                if (!dictionary.ContainsKey(item.Name))
                {
                    dictionary.Add(item.Name, text);
                }
            }

            foreach (T datum in data)
            {
                DataRow dataRow = dataTable.NewRow();
                foreach (PropertyDescriptor item2 in properties)
                {
                    string text2 = item2.Name;
                    if (dictionary.ContainsKey(text2))
                    {
                        text2 = dictionary[item2.Name];
                    }

                    dataRow[text2] = item2.GetValue(datum) ?? DBNull.Value;
                }

                dataTable.Rows.Add(dataRow);
            }

            dictionary.Clear();
        }

        return dataTable;
    }
}

标签:return,string,扩展,Global,list,item,集合,方法,public
From: https://blog.csdn.net/cjh16606260986/article/details/141941686

相关文章

  • 三、搭建网站服务器超详细步骤——FinalShell下载安装使用流程(免费国产的SSH工具)+宝塔
    前言本篇博客是搭建网站服务器模块下的第3部分  FinalShell下载安装使用流程  在分享这篇博客之前,首先讲一下,FinalShell软件是干什么用的,用大白话进行说明一下:这个软件是一款远程控制和管理服务器的软件,通过SSH协议与远程服务器进行连接,去操控一系列的命令信息。就像......
  • 【Day06-集合-Collection&List&Set】
    集合        集合框架概述        Java集合框架(JavaCollectionFramework,JCF)是Java编程语言的一部分,它提供了一种存储和操作一组对象的方式。这个框架的设计目标是提供一组标准的数据结构来帮助开发者更有效地管理数据。        接口与实现接口......
  • latex中引用参考文献[1],[2],[3]格式与[1-3]格式的方法
    1,latex中引用参考文献[1],[2]格式首先添加包:\usepackage{cite},在文中使用:\cite{a0,a1},来引用参考文献,效果如下:。如果我们引用3个参考文献,在文中使用:\cite{a0,a1,a2},效果如下:。参考文献排版:2,latex中引用参考文献[1-3]格式首先添加包:\usepackage[numbers,sort&compress]{n......
  • 6.方法
    MODULE6 方法All一、方法的使用(一)方法介绍以及简单方法定义(无参数返回值)1.问题描述:之前所有的代码都在main方法中,如果我们将来将所有的代码都放在main 方法中,会使得main方法代码太多->不好维护解决:将不同功能的代码梵高不同的方法中,想执行某个功能,直接调用方法 名就行了,对应......
  • Python 类变动的钩子方法 属性方法
    Python类变动的钩子方法fromtypingimportListclassField:def__init__(self,name,is_user=False):self.name=nameself.is_user=is_userdef__str__(self):returnf'name={self.name},is_user={self.is_user}'classFieldQueu......
  • 《死亡细胞》游戏崩溃弹窗“找不到ig7icd32.dll”该怎么处理?死亡细胞游戏启动时闪退提
    在玩《死亡细胞》时,若游戏崩溃并弹窗显示“找不到ig7icd32.dll”,先别慌张。您可以在网上搜索该文件并下载到正确位置,或者对相关组件进行修复和重新安装。采取这些措施,有望解决这一问题,重回游戏。本篇将为大家带来《死亡细胞》游戏崩溃弹窗“找不到ig7icd32.dll”该怎么处理的内......
  • 《黑神话:悟空》游戏启动时崩溃提示“找不到d3d12.dll”该怎么办?黑神话悟空游戏闪退弹
    在启动《黑神话:悟空》时,如果崩溃并提示“找不到d3d12.dll”,您先别慌。可以通过重新安装DirectX运行库来解决,或者检查相关文件是否被误删。也可以更新显卡驱动,尝试修复此问题,顺利开启游戏之旅。本篇将为大家带来《黑神话:悟空》游戏启动时崩溃提示“找不到d3d12.dll”该怎么办的......
  • 20240905_154516 python 填空题 字符串方法2
    有字符串列表li=["a","b","c"],让列表成员用+拼接,保存给变量rr="+".join(li)有字符串s,把它的内容变成小写,保存给变量rr=s.lower()有字符串s,把它内部的java全替换为python,保存结果给变量rr=s.replace("java","python")有字符串s="abc",请把它按空符号进行分割,得......
  • 【NLP自然语言处理】文本处理的基本方法
    目录......
  • 告别CAD运行难题:一键解决dbghelp.dll错误的方法
    当你在使用CAD(计算机辅助设计)软件时遇到dbghelp.dll错误,这可能会导致软件无法正常运行或频繁崩溃。不过,你不必过于担心,因为这个问题通常可以通过几种方法来解决。以下是一些简单而有效的方法,旨在帮助你一键解决dbghelp.dll错误。方法一:使用系统文件检查器(SFC)Windows操作系统......