使用搜索的通用列表 [英] generic list using search

查看:45
本文介绍了使用搜索的通用列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

内部静态void GenerateExcel(DataTable dt)

{

Microsoft.Office.Interop.Excel.Application objApp = new Microsoft.Office.Interop.Excel .Application();

Microsoft.Office.Interop.Excel.Workbooks objBooks = objApp.Workbooks;

Microsoft.Office.Interop.Excel.Workbook objBook = objBooks.Add (Missing.Value);

Microsoft.Office.Interop.Excel.Worksheet objSheet = null;



if(dt.Rows.Count > 0)

{

objSheet =(Microsoft.Office.Interop.Excel.Worksheet)objBook.Worksheets.Add(Missing.Value,Missing.Value,Missing。 Value,Missing.Value);

((Microsoft.Office.Interop.Excel.Worksheet)objBook.Sheets [1])。选择(Missing.Value);



int row = 0;

//标题

objSheet.Cells [row + 1,1] =CC_CODE;

objSheet.Cells [row + 1,2] =DAY;

objSheet.Cells [row + 1,3] =MONTH;

objSheet.Cells [row + 1,4] =YEAR;

objSheet.Cells [row + 1,5] =SHIFT;

objSheet .Cells [row + 1,6] =SCODE;

objSheet.Cells [row + 1,7] =MILKTYPE;

objSheet.Cells [row + 1,8] =CAN;

objSheet.Cells [row + 1,9] =KG;

objSheet.Cells [row + 1,10 ] =LITER;

objSheet.Cells [row + 1,11] =LR;

objSheet.Cells [row + 1,12] =FAT ;

objSheet.Cells [row + 1,13] =SNF;

objSheet.Cells [row + 1,14] =SOUR STATUS;

objSheet.Cells [row + 1,14] .EntireRow.Font.Bold = true;

objSheet.Columns [16] .AutoFit();

foreach(DataRow dr in dt.Rows)

{

row ++;

for(int col = 0; col< dt.Columns.Count; col ++)

{

objSheet.Cells [row + 1,col + 1] = dr [col] .ToString();

objSheet .Cells [row + 1,1] = Settings.Instance.UnionCode;

objSheet.Cells [row + 1,2] = Convert.ToDateTime(dr [Date])。Day;

objSheet.Cells [row + 1,3] = string.Format({0:MM},Convert.ToDateTime(dr [Date]));

objSheet.Cells [row + 1,4] = Convert.ToDateTime(dr [Date])。年份;

objSheet.Cells [row + 1,5] = dr [Shift ] .ToString();

objSheet.Cells [row + 1,6] = dr [SocNo]。ToString();

objSheet.Cells [row + 1,7=C;

objSheet.Cells [row + 1,8] = dr [CAN]。ToString();

objSheet.Cells [row + 1,9] =;

objSheet.Cells [row + 1,10] = dr [Liter]。ToString();

objSheet.Range [J2,J+ row + 1] .NumberFormat =####。0 ;

objSheet.Range [L2,L+行+ 1] .NumberFormat =#。0;

objSheet.Range [M2 ,M+行+ 1] .NumberFormat =#。0;

objSheet.Cells [row + 1,11] =;

objSheet。单元格[row + 1,12] = dr [Fat]。ToString();

objSheet.Cells [row + 1,13] = dr [Snf]。ToString();

objSheet.Cells [row + 1,14] =;

}

}



objBook.Close(true,@D:\ 012586.xlsx,Missing.Value);

objBooks.Close();

objApp.Quit();



}

}

解决方案

如果是y你想基于某些属性在CaseManagement列表上执行模式搜索LINQ是一个不错的选择..

如下所示..

静态列表<   CaseManagement  >  ListCaseDetails()
{
返回新列表< CaseManagement > ()
{new CaseManagement(){CustomerName =Customer1,CaseTitle =CaseTitle111},
new CaseManagement(){CustomerName =Customer22 ,CaseTitle =CaseTitle22},
新CaseManagement(){CustomerName =Customer333,CaseTitle =CaseTitle3}};
}
static void搜索()
{
正则表达式reg =新正则表达式(@^ [A-Za-z] * \d {1}


,RegexOptions.IgnoreCase);
var x = ListCaseDetails()。其中​​(p => reg.IsMatch(p.CustomerName)== true || reg.IsMatch(p.CaseTitle)== true)。ToList();

}





这将导致{Customer1,CaseTitle111}和{Customer333,CaseTitle3}作为输出


internal static void GenerateExcel(DataTable dt)
{
Microsoft.Office.Interop.Excel.Application objApp = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbooks objBooks = objApp.Workbooks;
Microsoft.Office.Interop.Excel.Workbook objBook = objBooks.Add(Missing.Value);
Microsoft.Office.Interop.Excel.Worksheet objSheet = null;

if (dt.Rows.Count > 0)
{
objSheet = (Microsoft.Office.Interop.Excel.Worksheet)objBook.Worksheets.Add(Missing.Value, Missing.Value, Missing.Value, Missing.Value);
((Microsoft.Office.Interop.Excel.Worksheet)objBook.Sheets[1]).Select(Missing.Value);

int row = 0;
//Headers
objSheet.Cells[row + 1, 1] = "CC_CODE";
objSheet.Cells[row + 1, 2] = "DAY";
objSheet.Cells[row + 1, 3] = "MONTH";
objSheet.Cells[row + 1, 4] = "YEAR";
objSheet.Cells[row + 1, 5] = "SHIFT";
objSheet.Cells[row + 1, 6] = "SCODE";
objSheet.Cells[row + 1, 7] = "MILKTYPE";
objSheet.Cells[row + 1, 8] = "CAN";
objSheet.Cells[row + 1, 9] = "KG";
objSheet.Cells[row + 1, 10] = "LITER";
objSheet.Cells[row + 1, 11] = "LR";
objSheet.Cells[row + 1, 12] = "FAT";
objSheet.Cells[row + 1, 13] = "SNF";
objSheet.Cells[row + 1, 14] = "SOUR STATUS";
objSheet.Cells[row + 1, 14].EntireRow.Font.Bold = true;
objSheet.Columns[16].AutoFit();
foreach (DataRow dr in dt.Rows)
{
row++;
for (int col = 0; col < dt.Columns.Count; col++)
{
objSheet.Cells[row + 1, col + 1] = dr[col].ToString();
objSheet.Cells[row + 1, 1] = Settings.Instance.UnionCode;
objSheet.Cells[row + 1, 2] = Convert.ToDateTime(dr["Date"]).Day;
objSheet.Cells[row + 1, 3] = string.Format("{0:MM}", Convert.ToDateTime(dr["Date"]));
objSheet.Cells[row + 1, 4] = Convert.ToDateTime(dr["Date"]).Year;
objSheet.Cells[row + 1, 5] = dr["Shift"].ToString();
objSheet.Cells[row + 1, 6] = dr["SocNo"].ToString();
objSheet.Cells[row + 1, 7] = "C";
objSheet.Cells[row + 1, 8] = dr["CAN"].ToString();
objSheet.Cells[row + 1, 9] = " ";
objSheet.Cells[row + 1, 10] = dr["Liter"].ToString();
objSheet.Range["J2", "J" + row + 1].NumberFormat = "####.0";
objSheet.Range["L2", "L" + row + 1].NumberFormat = "#.0";
objSheet.Range["M2", "M" + row + 1].NumberFormat = "#.0";
objSheet.Cells[row + 1, 11] = "";
objSheet.Cells[row + 1, 12] = dr["Fat"].ToString();
objSheet.Cells[row + 1, 13] = dr["Snf"].ToString();
objSheet.Cells[row + 1, 14] = "";
}
}

objBook.Close(true, @"D:\12586.xlsx", Missing.Value);
objBooks.Close();
objApp.Quit();

}
}

解决方案

Hi, if you want to perform a pattern search on list of CaseManagement based on certain properties LINQ is a good choice..
something like below..

static List<CaseManagement> ListCaseDetails()
        {
            return new List<CaseManagement>()
            { new CaseManagement() { CustomerName = "Customer1", CaseTitle="CaseTitle111"},
                new CaseManagement() {CustomerName = "Customer22", CaseTitle="CaseTitle22" },
                new CaseManagement() { CustomerName = "Customer333", CaseTitle="CaseTitle3"} };
        }
        static void Search()
        {
            Regex reg = new Regex(@"^[A-Za-z]*\d{1}


", RegexOptions.IgnoreCase); var x = ListCaseDetails().Where(p => reg.IsMatch(p.CustomerName) == true || reg.IsMatch(p.CaseTitle) == true).ToList(); }



This will result in {Customer1, CaseTitle111} and {Customer333, CaseTitle3} as output


这篇关于使用搜索的通用列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆