首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在使用条件语句遍历C#中的行时,如何让数据表检测多个列?

在使用条件语句遍历C#中的行时,如何让数据表检测多个列?
EN

Stack Overflow用户
提问于 2021-10-22 17:43:05
回答 1查看 69关注 0票数 1

我是C#新手,我必须在C#中重新构建一个JavaScript程序。

此程序涉及读取CSV文件并对其进行迭代,以检测不同的值并生成输出。

下面是我的代码示例:

代码语言:javascript
代码运行次数:0
运行
复制
foreach(DataRow row in results.Rows)
{
    if (row["Date"].ToString().Substring(row["Date"].ToString().Length - 16) == "2021 12:00:00 AM") //Checks if the year is 2021 or not in the "date" column
    {
        if (row["State"].ToString() == "CA") //Looks for CA state in the "state" column, however, it appears to not be finding it?
        { //DOES NEEDED CALCULATIONS

基本上,代码可以很好地检测数据表中的"2021“日期,但在迭代行时根本找不到CA状态,因此,所需的计算永远不会完成。

下面是数据表的样子:DataTable

非常感谢您的帮助,由于我对C#缺乏了解,我在这方面已经坚持了一段时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-22 17:55:43

很可能row["State"]中有一些额外的空格。

试试这个:

代码语言:javascript
代码运行次数:0
运行
复制
foreach(DataRow row in results.Rows)
{
    if (row["Date"].ToString().Substring(row["Date"].ToString().Length - 16) == "2021 12:00:00 AM") //Checks if the year is 2021 or not in the "date" column
    {
        if (row["State"].ToString().Contains("CA")) //Looks for CA state in the "state" column, however, it appears to not be finding it?
        { //DOES NEEDED CALCULATIONS

话虽如此,前面的所有评论都对你的需求很有帮助。如果没有必要,不要进行自己的CSV解析。不要以string的身份在DateTime上工作。创建自己的DTO来表示记录,而不是使用DataTable

示例:

代码语言:javascript
代码运行次数:0
运行
复制
record Invoice
{
    public int InvoiceNumber { get; set; }
    public DateTime Date { get; set; }
    public double Amount { get; set; }
    public string State { get; set; }
}

public void DoStuff()
{
    var invoices = ReadInvoiceFile("Your/Path/Here.csv");
    foreach (var invoice in invoices)
    {
        if(invoice.Date.Year != 2021) continue;
        if (invoice.State.Contains("CA"))
        {
            //do CA specific stuff here
        }
    }
}

private List<Invoice> ReadInvoiceFile(string path)
{
    //realistically you would use a 3rd party library to do this
}

我还想补充说,您不应该在代码中使用内联文字(例如我的示例中的2021"CA" )。让你的行为依赖于硬编码的州和年份周围的if语句违反了开放-封闭原则,并且是重构为工厂方法的一个很好的候选者。但让我们一步一步来。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69681099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档