gpt4 book ai didi

c# - 分解 lambda 表达式

转载 作者:太空狗 更新时间:2023-10-29 23:29:08 27 4
gpt4 key购买 nike

下面的代码适用于我,但是我想在将其添加到表之前添加一个条件。我需要的是 - 如果“扫描时间”在两个日期之间,则应将其添加到“表”中,否则应将其忽略。

这是为了选择文件..

private void btnSelectFile_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog()
{
Title = "Select the file to open.",
Filter = "DAT (*.dat)|*.dat|TXT (*.txt)|*.txt|All Files (*.*)|*.*",
InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
};

if (ofd.ShowDialog() == DialogResult.OK)
{
txtFilePath.Text = ofd.FileName;
loadDataToGridview();
}
}

这是为了读取文件然后将其添加到数据 GridView

private void loadDataToGridview()
{
DataTable table = new DataTable();
table.Columns.Add("Emp ID");
table.Columns.Add("Scan Time");
table.Columns.Add("Undefined 1");
table.Columns.Add("Undefined 2");
table.Columns.Add("Undefined 3");
table.Columns.Add("Undefined 4");

var lines = File.ReadAllLines(txtFilePath.Text).ToList();
lines.ForEach(line => table.Rows.Add(line.Split((char)9)));
return table;
}

我从这里得到了 loadDataToGridview 方法,但我不知道如何分解

lines.ForEach(line => table.Rows.Add(line.Split((char)9)));

lambda 表达式来包含我需要的条件。假设日期选择器的名称是 dateFrom 和 dateTo。非常感谢您的帮助。

最佳答案

不要使用ReadAllLines 方法,因为它会将整个文件加载到内存中。换句话说,如果您的日期之间只有 1 行,为什么要加载整个文件。

改用ReadLines 方法。为什么?看我的回答here .

var lines = File.ReadLines("").Select(x => Split(x)).Where(x => IsBetweenDates(x[1]));
lines.ForEach(row => table.Rows.Add(row));
dataGridView1.DataSource = table;

您应该根据需要在此处添加自己的错误处理。我已经为你添加了一些:

private bool IsBetweenDates(string value)
{
var dateValue = DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
return dateValue >= fromDate.Value && dateValue <= toDate.Value;
}

private string[] Split(string line)
{
if (string.IsNullOrWhitespace(x))
{
// There is nothing in this line. Is this allowed in your case?
// If yes do whatever you need to do here. For example, log it or something.
}
var splits = line.Split((char)9);
if (splits.Length != 6)
{
// This line does not have 6 fields so what do you want to do?
}

return splits;
}

关于c# - 分解 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41435147/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com