计算一行中字符串的出现次数

时间:2015-05-04 23:52:34

标签: c# winforms

我有一个包含不同值的组合框:

public static DataTable GetStates()
    {
        DataTable myStates = new DataTable();
        myStates.Columns.Add("Name", typeof(string));
        myStates.Columns.Add("Location", typeof(string));

        myStates.Rows.Add("1", "USA");
        myStates.Rows.Add("2", "USA");
        myStates.Rows.Add("3", "Canada");
        return myStates;
    }

我希望它在BindStates函数中,它将计算" USA"的出现次数。等等。

2 个答案:

答案 0 :(得分:2)

您可以通过对数据表使用LINQ来执行此操作。所以我正在做的是创建一个由DataRow ItemArray中的第二个对象分组的IGrouping。第二步是计算" USA"基。

// Get datatable with data
var states = GetStates();

// Create grouping of rows
var grouping = states.AsEnumerable().GroupBy(row => row.ItemArray[1]).ToList();

// Count how many rows are in the "USA" group
var numOfUSA = grouping.First(group => group.Key == "USA").Count();

显然这个代码可以通过null检查等来改进,这只是为了让你入门。祝你好运!

答案 1 :(得分:2)

public void BindStates(DataTable states)
{
    int numberUsa = 0;
    foreach (DataRow row in states.Rows)
    {
        if (row[1].ToString() == "USA")
        {
            numberUsa++;
        }
    }

    Console.WriteLine(numberUsa.ToString());
}