我想这样做,整个事情在C#。什么是最好的方法?
最好的办法是在SQL表达式中使用这样
SELECT
Kid,
SUM(AMOUNT) Sum_of_amount
FROM
table
GROUP BY
Kid
使用SQL读者使用这个SQL是相当直截了当。下面是一个例子,我将读者的值投影到一个由匿名类型组成的列表中。如果你不想让我匿名,你可以定义你自己的类型并使用它。您也可以使用for
循环代替linq表达式。
using (SqlConnection cn = new SqlConnection ("ConnectionString"))
using (SqlCommand cmd = new SqlCommand (@"
SELECT
Kid,
SUM(AMOUNT) Sum_of_amount
FROM
table
GROUP BY
Kid", cn))
{
cn.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
var list = (from r in dr.Cast<DbDataRecord>()
select new {Id= r.GetInt32(0), SumOfAmount = r.GetInt32(1) }).ToList();
}
}
如果你正在使用类似的LINQ to SQL它非常直截了当地做这样
Table<Kids> kids = db.GetKids();
var kidsSum =
(from k in kids
group p by p.Id into g
select new {ID = g.Key, SumOfAmount = g.Sum(p => p.Amount) }).ToList();
什么是保存最好的方式?数组列表?
没有“最好”的方式,但直接操纵数组有问题。你最好用你选择的通用集合。
键入数据集也是一个有效的选择,尽管许多人不喜欢它们。
如果你在SQL中这样做,它可能会很容易,但我不确定如果你想要一个C#答案如何帮助你。该解决方案可能很容易在LINQ中完成,但我不知道LINQ发布足够的解决方案...... – FrustratedWithFormsDesigner
您在C#中使用的是什么数据库抽象?你可以使用LINQ吗? – Kekoa