c#lambda表达式从vb到c的转换#
我正在尝试将此vb.net代码转换为c# c#错误: name函数不存在,并且 CT_贴花是一种类型,但其用途类似于变量c#lambda表达式从vb到c的转换#,c#,linq,C#,Linq,我正在尝试将此vb.net代码转换为c# c#错误: name函数不存在,并且 CT_贴花是一种类型,但其用途类似于变量 有人知道如何正确地转换它吗?如果没有对DBContext的访问,很难给出准确的查询,而忽略了所使用查询的低效性 根据我们所掌握的信息,我希望以下代码非常接近您想要的,或者至少应该让您开始: if (!String.IsNullOrWhiteSpace(txtCompanyName.Text)) { var result
有人知道如何正确地转换它吗?如果没有对DBContext的访问,很难给出准确的查询,而忽略了所使用查询的低效性 根据我们所掌握的信息,我希望以下代码非常接近您想要的,或者至少应该让您开始:
if (!String.IsNullOrWhiteSpace(txtCompanyName.Text))
{
var result =
decals.Where(
d => (
from c in db.CT_Companies
where c.CompanyName.Contains(txtCompanyName.Text.Trim())
select c.CompanyID
).Contains(
(from t in db.CT_Tanks where t.CargoTankID == d.TankID select t.CompanyID).Single()));
如果您正确设置了DBContext,我希望它的功能完全相同:
if (!String.IsNullOrWhiteSpace(txtCompanyName.Text))
{
IEnumerable<Decal> result =
decals.Where(d => string.Equals(d.Tank.Company.CompanyName, txtCompanyName.Text.Trim());
if(!String.IsNullOrWhiteSpace(txtCompanyName.Text))
{
IEnumerable结果=
其中(d=>string.Equals(d.Tank.Company.CompanyName,txtCompanyName.Text.Trim());
您的问题在于where子句中的关键字函数
您必须这样写。其中(d=>(..)。请参阅“jessehouwing”回复
语法.Where(function(f)…)是C#中lambda表达式的VB.Net等价物。
lambda表达式。其中(d=>(…)表示“d”指向(某个操作或表达式)。
如果有帮助,请告诉我。始终使用
!String.IsNullOrEmpty(txtCompanyName.Text)
而不是txtCompanyName.Text.Trim()!=String.Empty
还有ToList()
是多余的,代码不应该在VB中编译,因为其中
需要一个谓词,但lambda返回的是一个字符串。@jp2code这些表达式是不等价的;如果txtCompanyName.Text只包含空格字符,它们会给出不同的结果。@phoog yeh,应该是IsNullOrWhiteSpace
right@Konrad鲁多ph,由于复杂性很难看到,但实际返回的是Contains方法的结果,当然返回bool。
if (!String.IsNullOrWhiteSpace(txtCompanyName.Text))
{
var result =
decals.Where(
d => (
from c in db.CT_Companies
where c.CompanyName.Contains(txtCompanyName.Text.Trim())
select c.CompanyID
).Contains(
(from t in db.CT_Tanks where t.CargoTankID == d.TankID select t.CompanyID).Single()));
if (!String.IsNullOrWhiteSpace(txtCompanyName.Text))
{
IEnumerable<Decal> result =
decals.Where(d => string.Equals(d.Tank.Company.CompanyName, txtCompanyName.Text.Trim());