#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"));