これはなぜコンパイルできますが、実行時にSQL /エンティティに正しく変換できないため、例外を作成する理由を説明できますか?舞台裏で起こっていることを理解しようとしています。なぜLINQはstring.IsNullOrWhiteSpace()を変換できないのですか?
var data = (from e in db.Employees
join egp in db.EmployeeGrievanceMappings on e.EmployeeID equals egp.EmployeeID
join et in db.EmployeeTypes on egp.EmployeeTypeID equals et.EmployeeTypeID
where et.EmployeeTypeName == employeeeType
select new GrievantStewardBO()
{
Id = e.EmployeeADID,
EmployeeID = e.EmployeeID,
EmployeeTypeID = egp.EmployeeTypeID,
GrievanceID = egp.GrievanceID,
EmployeeGrievanceID = egp.EmployeeGrievanceID,
text = string.IsNullOrWhiteSpace(e.EmployeeLastName) ? e.EmployeeFirstName : e.EmployeeLastName + "," + e.EmployeeFirstName,
FirstName = e.EmployeeFirstName,
LastName = e.EmployeeLastName
}).
ToList();
私はこれを書いて正しく動作させることができますが、LINQを使って同様のランインを理解したかっただけです。
text = e.EmployeeLastName == null || e.EmployeeLastName.Trim() == "" ? e.EmployeeFirstName : e.EmployeeLastName + "," + e.EmployeeFirstName
関連する質問:Trim()がLINQで正しく翻訳するのはなぜですか?
Linqからオブジェクトへの処理は可能ですが、Linq-toによってSqlへの変換はできません-sql。 linq to sqlのサポートされていない文字列メソッドの完全な一覧は次のとおりです。https://msdn.microsoft.com/en-us/library/bb882672(v=vs.110).aspx – Igor
エンティティプロバイダを誰にもプログラムしていないのでその式をSQLに変換します。機能は無料ではありません。 [here](https://msdn.microsoft.com/en-us/library/bb738681.aspx)でサポートされている文字列関数を確認することができます –
は、このlinq SQLまたはエンティティのフレームワークまたは何か他のですか? –