定义对象
public class DATA_ITEM
{
public string LOT_ID { get; set; }
public int QTY { get; set; }
}
定义集合
//数据源list
private static List<DATA_ITEM> A_list = new List<DATA_ITEM>();
private static List<DATA_ITEM> B_list = new List<DATA_ITEM>();
//临时list
private static List<DATA_ITEM> Merge_list = new List<DATA_ITEM>();
private static List<DATA_ITEM> Atemp_list = new List<DATA_ITEM>();
private static List<DATA_ITEM> Btemp_list = new List<DATA_ITEM>();
1、合并集合(两不相同)
Merge_list = A_list.Concat(B_list).ToList();
2、合并集合并去除重复项(并集)
Merge_list = A_list.Concat(B_list.Where(a => !A_list.Exists(b => b.LOT_ID == a.LOT_ID && b.QTY == a.QTY))).ToList();
3、集合比对(找出各自不相同的 差集)
Atemp_list = A_list.Where(a => !B_list.Exists(b => b.LOT_ID == a.LOT_ID && b.QTY == a.QTY)).ToList();
Btemp_list = B_list.Where(a => !A_list.Exists(b => b.LOT_ID == a.LOT_ID && b.QTY == a.QTY)).ToList();
4、集合共有的部分(交集)
Merge_list = A_list.Where(a => B_list.Exists(b => b.LOT_ID == a.LOT_ID && b.QTY == a.QTY)).ToList();
补:
List ListA = new List();
List ListB = new List();
List ListResult = new List();
ListResult = ListA.Distinct().ToList();//去重
ListResult = ListA.Except(ListB).ToList();//差集
ListResult= ListA.Union(ListB).ToList(); //并集
ListResult = ListA.Intersect(ListB).ToList();//交集
//lambda多条件查询 where连接select
var num = removeData_list.ToList().Max(p => Convert.ToInt32(p.TIME_DAY));
List c_status = removeData_list.Where(p => p.TIME_DAY == num.ToString()).ToList().Select(p => p.STATUS).ToList();
c.STATUS = c_status[0];
string[] DN_NO = rptDatas.Select(o => o.DN_NO).Distinct().ToList().Where(it => it != “”).ToArray();
ADD 20210807
截取特定符号之前的数据
for (int i = 0; i < Tres_list.Count; i++)
{
TotalData_list.Where(p => p.RES_ID.Split('-')[0] == Tres_list[i]).ToList();
}
ADD 20211111
设置列宽
//设置列宽
for (int i = 0; i < headList.Count(); i++)
{
sheet1.AutoSizeColumn(i);
}
ADD 20211204
多字段排序
//倒序
list.OrderByDescending(i => i.a).ThenByDescending(i => i.b);
//顺序
list.OrderBy(i => i.a).ThenBy(i => i.b);
ADD 20211208
字典取值
//表数据
for (int i = 0; i < lot.CT.Count; i++)
{
row = sheet.CreateRow(i + 1);
KeyValuePair<string, double> kv = lot.CT.ElementAt(i);
for (int j = 0; j < 2; j++)
{
cell = row.CreateCell(j);
}
row.GetCell(0).SetCellValue(kv.Key);
row.GetCell(1).SetCellValue(kv.Value);
}
ADD 20220627
oracle列转行 UNPIVOT
SELECT DATA_1 RUN,
DATA_2 REWORK,
DATA_3 SETUP,
DATA_4 PM,
DATA_5 DOWN,
DATA_6 IDLE,
DATA_7 LOTCHANGE,
DATA_8 LENDING,
DATA_9 STOP
FROM MRPTCSTDAT
WHERE EDI_NAME = 'EDI_567_EquipStatusChart'
AND KEY_1 = :RES_ID
AND WORK_DATE = :TIME
SELECT *
FROM (SELECT DATA_1 RUN,
DATA_2 REWORK,
DATA_3 SETUP,
DATA_4 PM,
DATA_5 DOWN,
DATA_6 IDLE,
DATA_7 LOTCHANGE,
DATA_8 LENDING,
DATA_9 STOP
FROM MRPTCSTDAT
WHERE EDI_NAME = 'EDI_567_EquipStatusChart'
AND KEY_1 = :RES_ID
AND WORK_DATE = :TIME)
UNPIVOT (STATUS_TIME
FOR STATUS
IN (RUN,
REWORK,
SETUP,
PM,
DOWN,
IDLE,
LOTCHANGE,
LENDING,
STOP))
oracle行转列 PIVOT
SELECT EVENT_ID, MAX (NEW_HIST_SEQ) HIST_SEQ
FROM E812RESHIS
WHERE RES_ID = :RES_ID
AND TRAN_TIME < :S_TIME
AND EVENT_ID IN ('567_START', '567_END')
GROUP BY EVENT_ID
SELECT *
FROM ( SELECT EVENT_ID, MAX (NEW_HIST_SEQ) HIST_SEQ
FROM E812RESHIS
WHERE RES_ID = :RES_ID
AND TRAN_TIME < :S_TIME
AND EVENT_ID IN ('567_START', '567_END')
GROUP BY EVENT_ID)
PIVOT (MAX (HIST_SEQ)
FOR EVENT_ID
IN ('567_START' AS "567_START", '567_END' AS "567_END"))
ADD 20220719
Oracle日期格式yyyymmdd格式化为yyyy-mm-dd
问题:日期展示为CREATE_TIME = 202008280800需要展示为2020-08-28
解决:select TO_CHAR (TO_DATE (SUBSTR (CREATE_TIME, 0, 8), 'yyyyMMdd') - 1,'YYYY-MM-DD') DATE from dual
结果展示:2020-08-28
ADD 20240425
1、向上进位取整。Math.Ceiling
例如: Math.Ceiling(32.6)=33; Math.Ceiling(32.0)=32;
2、向下舍位取整。Math.Floor
例如: Math.Floor(32.6)=32;
3、按指定位数的小数进行四舍五入。Math.Round
例如:Math.Round(36.236,2)=36.24; Math.Round(36.232,2)=36.23;
日常用到,遂记录,自用。