我正在寻找实现以下目标的方法:
我有一个数据表:
ID Custommer Value 1 Client 1 10 2 Client 2 20 3 Client 3 30 1 Client 1 11 2 Client 2 21 3 Client 3 31
我需要选择Column" Value"的最大值。特定ID" id"
例:客户1的最大值
应该返回:1 Client 1 11
但是使用这段代码:
dVipArchiveClientSelectd = dVipArchive
.Select(id + "= 1" + " AND " + value + " = MAX(" + value + ")"); }
它无法返回。有一种方法可以使用数据表来实现这一点并选择?
答案 0 :(得分:0)
使用ID在Customer字段中创建一个IEnumerable,然后将MAX应用于Value字段
var g = from t in dVipArchive.AsEnumerable()
group t by new {id = t["ID"], cust=t["Customer"]}
into grp
select new
{
grp.Key.id,
grp.Key.cust,
maxV = grp.Max(z => z["Value"])
};
现在,您拥有每个ID(和客户)的最大值的所有行 只需应用WHERE即可提取您感兴趣的行
var row = g.Where (x => Convert.ToInt32(x.id) == 1).Single();
Console.WriteLine("ID=" + row.id.ToString());
Console.WriteLine("Customer=" + row.cust);
Console.WriteLine("MaxValue=" + row.maxV);
我不确定这比直接执行像
这样的SQL命令更好SELECT ID, Customer, Max(VALUE)
FROM Customers
WHERE ID=@idParameter
GROUP BY ID, Customer
答案 1 :(得分:0)
SELECT MAX(Value)FROM yourtable WHERE id = 1,如果这是你想要的dunno
更新
string maxvalue = dt.AsEnumerable()
.Max(row => row["Value"])
.WHERE (//logic)
.ToString();
希望这可以帮助你