私はこのvb.netコードをC#に変換しようとしています。c#ラムダ式vbからcに変換#
if (txtCompanyName.Text.Trim() != string.Empty)
{
decals = decals.Where(Function(CT_Decal d)(from c in db.CT_Companies
where c.CompanyName.Contains(txtCompanyName.Text.Trim())
select c.CompanyID).ToList().Contains((from t in db.CT_Tanks where t.CargoTankID == d.TankID
select t.CompanyID).Single.ToString()));
}//end if
C#のエラー:
名前の関数が存在しないと CT_Decalがタイプですが、変数のように使用されている
If (txtCompanyName.Text.Trim() <> String.Empty) Then
decals = decals.Where(Function(d As CT_Decal) (From c In db.CT_Companies Where c.CompanyName.Contains(txtCompanyName.Text.Trim()) Select c.CompanyID).ToList.Contains((From t In db.CT_Tanks Where t.CargoTankID = d.TankID Select t.CompanyID).Single.ToString()))
End If
は、C#で、私は、コードを入れてみました。
誰かがこれを正しく変換する方法を知っていますか?
'txtCompanyName.Text.Trim()!= string.Empty'の代わりに必ず'!String.IsNullOrEmpty(txtCompanyName.Text) 'を使用してください。 – jp2code
また、' ToList() 'は冗長でコードはコンパイルしないでくださいVBでは 'Where'は述語を期待していますが、ラムダは文字列を返しています。 –
@ jp2codeこれらの式は等価ではありません。 txtCompanyName.Textに空白文字のみが含まれていると、結果が異なります。 – phoog