私は次のようなLINQラムダ式を使用しています:
int Value = 1;
qryContent objContentLine;
using (Entities db = new Entities())
{
objContentLine = (from q in db.qryContents
where q.LineID == Value
orderby q.RowID descending
select q).FirstOrDefault();
}
ただし、次のエラーが表示されます。
ラムダ式はデリゲート型ではないため、「string」型に変換できません
このシステムクラスからusing System.Linq;
が欠落していると思います。
また、コードにusing System.Data.Entity;
を追加します
私の場合、using System.Data.Entity;
を追加する必要がありました
私が使っていた解決した私のケース
@Html.DropDownList(model => model.TypeId ...)
を使用して
@Html.DropDownListFor(model => model.TypeId ...)
それを解決します
他のユーザーが述べたディレクティブを使用していないことに関連していない場合、クエリに別の問題がある場合にも発生します。
VSコンパイラのエラーリストを見てください:たとえば、クエリの「値」変数が存在しない場合、「ラムダから文字列への」エラーが発生し、不明/誤ったフィールド。
あなたの場合、次のようになります。
objContentLine = (from q in db.qryContents
where q.LineID == Value
orderby q.RowID descending
select q).FirstOrDefault();
エラー:
エラー241ラムダ式はデリゲート型ではないため、型 'string'に変換できません
エラー242デリゲート 'System.Func <..>'は1つの引数を取りません
エラー243名前 'Value'は現在のコンテキストに存在しません
「値」変数エラーを修正すると、他のエラーも消えます。
これにつまずいた人のために、すべての参照と適切に配置されたステートメントを使用してスローされたこのタイプのエラーを解決しました。宣言されたDataTableでDataTableを呼び出すのではなく、DataTableを返す関数に代入すると、明らかに混乱が生じます。例えば:
これは私のために働いた:
DataTable dt = SomeObject.ReturnsDataTable();
List<string> ls = dt.AsEnumerable().Select(dr => dr["name"].ToString()).ToList<string>();
しかし、これはしませんでした:
List<string> ls = SomeObject.ReturnsDataTable().AsEnumerable().Select(dr => dr["name"].ToString()).ToList<string>();
理由はまだ完全にはわかりませんが、このタイプのエラーに誰かがイライラしている場合は、試してみてください。