【发布时间】:2015-09-23 21:25:43
【问题描述】:
我有一个程序要从 VB 转换为 C#,并且在 Linq 语句中出现“当前上下文中不存在名称‘模型’”的错误。 “模型”列是“rdfcounts”表中的行标题,因此它确实存在。如何在 select 语句中调用实际的列?
var ACFTModel = (
from rdfcounts in dc.RDFCounts
where (Convert.ToString(rdfcounts.RDate.Value.Year) + Convert.ToString(rdfcounts.RDate.Value.Month)) == (RDFDate1.ToString())
group rdfcounts by rdfcounts.Model into g
select new { MonRDF = (RDFMDate.ToString() + " " + Model = g.Key + "" + Convert.ToString(g.Sum((p) => p.RDFNUm))) }).ToArray();
这是 Linq VB 代码,它确实有效。
Dim ACFTModel = (From rdfcounts In dc.RDFCounts _
Where (CStr(rdfcounts.RDate.Value.Year) _
+ CStr(rdfcounts.RDate.Value.Month)) = (RDFDate1.ToString) _
Group rdfcounts By rdfcounts.Model Into g = Group _
Select _
MonRDF = (RDFMDate.ToString + " " + Model + "" _
+ CStr(g.Sum(Function(p) p.RDFNUm))) _
).ToArray
【问题讨论】:
-
选择部分中
+ Model = g.Key后面的=是什么? -
VB 中的字符串连接是使用
&运算符而不是+完成的。 -
嗨,Ryan,我不确定“=”是什么意思,我是 C# 新手,使用 VB 到 C# 转换器,这就是被翻译成的内容。
-
将“Model = g.Key”替换为“g.Key”。这是我们的转换器中的一个错误 - 它已在下一个版本中修复。
-
@OneFineDay: 使用 '&' 运算符更合适地进行连接,但 '+' 也可以,尽管它可能不明确。基本上,VB 选择对“+”最有意义的操作,可能是加法或连接。旧版 VB 读心功能的一部分。