Как вычислить сумму в столбце с данными, используя linq с предложением where?

#c# #linq

#c# #linq

Вопрос:

Я только начинаю использовать linq, и я хотел бы иметь возможность суммировать столбец в таблице данных, используя предложение where. Я могу сделать это для всей таблицы данных, но я понятия не имею, как это работает с предложением where.

Как бы я получил сумму, где столбец «Состояние» = «TN»?

 using System.Data;
using System.Linq;

namespace Test_Linq
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = null;

            dt = new DataTable();
            dt.Columns.Add("State");
            dt.Columns.Add("Amount", typeof(int));
            dt.Rows.Add("TN", 1);
            dt.Rows.Add("TN", 10);
            dt.Rows.Add("FL", 5);

            //this returns 16 - I want it to return 11 for State="TN"
            var sum = dt.AsEnumerable().Sum(x => x.Field<int>("Amount")); 

        }
    }
}
  

Ответ №1:

Поместите Where перед Sum :

 var sum = dt.AsEnumerable()
            .Where(x => x.Field<string>("State") == "TN")
            .Sum(x => x.Field<int>("Amount")); 
  

Ответ №2:

Вы, вероятно, хотите что-то вроде:

 var sum = dt.AsEnumerable()
          .Where(x => x.Field<string>("State")== "TN")
          .Sum(x => x.Field<int>("Amount"));