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里面的写法不同吗?该如何写呢?
谢谢
7 个解决方案
#1
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()
}
#2
你的语句我贴过去试了(当然我去掉了“Group R By R..Fiel”中多出来的“.”),结果还是添加了“()”,不知是怎么回事?我用的是vs2010
#3
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)
#4
不好意思前些天不在,今天试了上面的代码依然不行。还是在G后面加了括号
用c#写linq很顺利,为什么在vb.net里就有这样的不同呢?
虽然用c#解决了,但还是想了解在vb里面该怎样写
我这个dtSet里面有两个表为主细表关系
通过linq查出明细数据用datagridview展示,另外呢想在窗体下面的statusbar里显示合计数
我知道循环datatable加总的办法是可以的,那么linq能不能解决呢?
上面的linq是汇总到客户的办法,在vb里面写居然出现了以上问题,真是奇怪了。
我的dtSet是强类型的,既然linq只有通过group by的方式汇总,而我的要求是全部加总,也就是group到一组中,想了想,统计的数据要求主表stat栏必须为2,所以用c#写了如下求和:
那是不是也只有这种方式使用linq求和呢?
这样的语句如何用vb.net写不出问题呢?linq在vb里和在c#里的写法还有那么多的不同吗?
谢谢
用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#里的写法还有那么多的不同吗?
谢谢
#6
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
#7
看来vb里面的linq与c#里的写法还是有差距的。例如into 后面一定是“Group ”换成其他的,就认为是个方法了。我感觉在vb里面很难用,现在我还没有在vb下实现在c#下写的linq求和呢。
#1
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()
}
#2
你的语句我贴过去试了(当然我去掉了“Group R By R..Fiel”中多出来的“.”),结果还是添加了“()”,不知是怎么回事?我用的是vs2010
#3
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)
#4
不好意思前些天不在,今天试了上面的代码依然不行。还是在G后面加了括号
用c#写linq很顺利,为什么在vb.net里就有这样的不同呢?
虽然用c#解决了,但还是想了解在vb里面该怎样写
我这个dtSet里面有两个表为主细表关系
通过linq查出明细数据用datagridview展示,另外呢想在窗体下面的statusbar里显示合计数
我知道循环datatable加总的办法是可以的,那么linq能不能解决呢?
上面的linq是汇总到客户的办法,在vb里面写居然出现了以上问题,真是奇怪了。
我的dtSet是强类型的,既然linq只有通过group by的方式汇总,而我的要求是全部加总,也就是group到一组中,想了想,统计的数据要求主表stat栏必须为2,所以用c#写了如下求和:
那是不是也只有这种方式使用linq求和呢?
这样的语句如何用vb.net写不出问题呢?linq在vb里和在c#里的写法还有那么多的不同吗?
谢谢
用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#里的写法还有那么多的不同吗?
谢谢
#5
http://msdn.microsoft.com/en-us/vbasic/bb737908
看看这个 也许能帮到你
看看这个 也许能帮到你
#6
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
#7
看来vb里面的linq与c#里的写法还是有差距的。例如into 后面一定是“Group ”换成其他的,就认为是个方法了。我感觉在vb里面很难用,现在我还没有在vb下实现在c#下写的linq求和呢。