vb.net中linq求和问题

cnwin 2011-06-17 02:29:31
我在vb.net中试图用linq求合计,写了如下语句:
Dim total = From R In DtSet.Sale_d
Group R By R.SaleIdRow.Customer_Id Into G()
Select New With {G.Key, .A = G.Sum(x >= x.Qty_Sale), .B = G.Sum(x >= x.Amt_Sale)}
DtSet为dataset,里面有两个表,主细表关系已建立关联。
但是写出来是不正确的 into后面不管用什么都会加上括号,视为方法,这样下面的就没法写了,我用c#写出来没什么问题,贴到vb.net里,他又自动得加上了括号,而且视为不正确的语句。
难道VB里面的写法不同吗?该如何写呢?
谢谢
...全文
366 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnwin 2011-06-22
  • 打赏
  • 举报
回复
看来vb里面的linq与c#里的写法还是有差距的。例如into 后面一定是“Group ”换成其他的,就认为是个方法了。我感觉在vb里面很难用,现在我还没有在vb下实现在c#下写的linq求和呢。
q107770540 2011-06-22
  • 打赏
  • 举报
回复

Public Sub Linq41()
Dim words = New String() {"blueberry", "chimpanzee", "abacus", "banana", "apple", "cheese"}

Dim wordGroups = From w In words _
Group w By Key = w(0) Into Group _
Select FirstLetter = Key, WordGroup = Group

For Each g In wordGroups
Console.WriteLine("Words that start with the letter '{0}':", g.FirstLetter)
For Each w In g.WordGroup
Console.WriteLine(w)
Next
Next

End Sub
q107770540 2011-06-22
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/en-us/vbasic/bb737908
看看这个 也许能帮到你
cnwin 2011-06-22
  • 打赏
  • 举报
回复
不好意思前些天不在,今天试了上面的代码依然不行。还是在G后面加了括号
用c#写linq很顺利,为什么在vb.net里就有这样的不同呢?
虽然用c#解决了,但还是想了解在vb里面该怎样写
我这个dtSet里面有两个表为主细表关系
通过linq查出明细数据用datagridview展示,另外呢想在窗体下面的statusbar里显示合计数
我知道循环datatable加总的办法是可以的,那么linq能不能解决呢?
上面的linq是汇总到客户的办法,在vb里面写居然出现了以上问题,真是奇怪了。
我的dtSet是强类型的,既然linq只有通过group by的方式汇总,而我的要求是全部加总,也就是group到一组中,想了想,统计的数据要求主表stat栏必须为2,所以用c#写了如下求和:

var Total=from R in Dt
group R by R.Stat into G
select new {QtySaleTotal = G.Sum(x => x.QtySale), AmtSaleTotal = G.Sum(x => x.AmtSale), QtyBackTotal = G.Sum(x => x.QtyBack), AmtBackTotal = G.Sum(x => x.AmtBack), ProFit = G.Sum(x => x.Profit)};

那是不是也只有这种方式使用linq求和呢?
这样的语句如何用vb.net写不出问题呢?linq在vb里和在c#里的写法还有那么多的不同吗?
谢谢
threenewbee 2011-06-18
  • 打赏
  • 举报
回复
 Dim total = (From R In DtSet.Table("Sale_d").AsEnumerable() _
Group R By R..Field(Of Integer)("Customer_Id") Into G).
Select(Function(x)
Dim a = (From x In G Select x.Qty_Sale).Sum()
Dim b = (From x In G Select x.Amt_Sale).Sum()
Return New With _
{
.key = G.Key, _
.A = a, _
.B = b
}


End Function)
cnwin 2011-06-17
  • 打赏
  • 举报
回复
你的语句我贴过去试了(当然我去掉了“Group R By R..Fiel”中多出来的“.”),结果还是添加了“()”,不知是怎么回事?我用的是vs2010
q107770540 2011-06-17
  • 打赏
  • 举报
回复

Dim total = From R In DtSet.Table("Sale_d").AsEnumerable() _
Group R By R..Field(Of Integer)("Customer_Id") Into G _
Select New With _
{
key=G.Key, _
.A =(From x In G Select x.Qty_Sale).Sum(), _
.B = (From x In G Select x.Amt_Sale).Sum()
}

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧