C#ベースのコードでEntity Frameworkを使用しています。私は予想外の奇妙さに遭遇し、提案を探しています。
ケース1、2、3、4 ...プロジェクト:
RivWorks.dll
RivWorks.Service.dll
RivWorks.Alpha.dll
サンプル(これらすべての作業):
RivWorks.Alpha.dll:
public static bool EndNegotitation(long ProductID)
{
var product = (from a in _dbFeed.AutoWithImage
where a.AutoID == ProductID select a).FirstOrDefault();
...
}
RivWorks.Service.dll
public static RivWorks.Model.NegotiationAutos.AutoWithImage
GetProductById(long productId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.AutoID == productId select a;
return myProduct.FirstOrDefault();
}
public static List<RivWorks.Model.NegotiationAutos.AutoWithImage>
GetProductByCompany(Guid companyId)
{
var myProduct = from a in _dbFeed.AutoWithImage
where a.CompanyID == companyId select a;
return myProduct.ToList();
}
等
ケース「奇妙さ」:
RivWorks.Web.Service.dll(WCFプロジェクト)
他のプロジェクトと同じ参照が含まれています。
public NegotiateSetup GetSetup(string method, string jsonInput)
{
...
long.TryParse(ProductID, out result);
var product = (from a in _dbFeed.AutoWithImage
where a.AutoID == result select a).FirstOrDefault();
...
}
このコンパイル時エラーが発生しています(エディターで「場所」という単語が強調表示されています):
ラムダ式はデリゲート型ではないため、「string」型に変換できません
これを引き起こす原因は何ですか?
結果に興味がある人のために:
コードの先頭に単純なUsingステートメントがありませんでした。
using System.Linq;
これで修正されました。
私の場合、それは欠落していました
using System.Data.Entity;
using System.Linq;
using System.Data.Entity;
約1時間、Razorビュー内のTelerik Gridテンプレートでこれに苦労していました。私の場合、これ:
columns.Bound(x => x.ID).Template(@<text><a href="@(Model.AppUrl + AdditionalFeeTypes/Details/" + item.ID)">@item.ID</a></text>);
これになるはずでした:
columns.Bound(x => x.Id).Template(@<text><a href="@(Model.AppUrl + AdditionalFeeTypes/Details/" + item.Id)">@item.Id</a></text>);
「Id」のケースは間違っていました!これが誰かの助けになることを願っています。存在しないプロパティを配置しただけで、このエラーが発生する可能性があります!
私の場合、私は
Using System.Linq;
しかし、where句の項目の後に&&がありませんでした。
悪いコード:
item.Group.ID == grp.ID
p.Product_Status_Flag == 1 &&
item.Valid
正しいコード(エラーなし):
item.Group.ID == grp.ID && // <- This was missing and I didn't see it right away.
p.Product_Status_Flag == 1 &&
item.Valid
これが誰かの時間を節約することを願っています。
私はこれにつまずいて、別の修正を見つけました。私はvar query = context.Contacts.Where(c => c.FullNameReverse == "TingTong");
を使用しており、言及されたエラーを取得していました。間違いは、メソッドFullNameReverse()
をプロパティFullNameReverse
として使用していたことです。 ()を逃しました!!!
私はMVC 3カミソリで同じ問題を抱えていたかもしれない誰かが同じかもしれないので、私の状態でそれを修正する方法を示したい
List<Taksit> lst = db.Taksit.Where(y => y.OgrenciId.Equals(Convert.ToInt32( list[0].Id))).ToList();
私は含むを使用しようとしましたが、OgrenciIdはintですここで言及されたエラーが発生するので、等しいを使用することで問題が解決されます
スレッドは少し古いですが、私はこれに遭遇したばかりで、「ネット上の答えは何もありませんでした。あるサイトは答えにつながるものについて言及しましたが、これはデータ型の問題でしたが、残念なことに再び見つけることができないので、ここに自分の解決策を投稿しています。将来のサーチャーはそれから利益を得るかもしれません。
オリジナル:IQueryableテスト= rからr.Record_ID == 100で、rを選択。
ここで、Recordsは、以前のLINQエクスプレスオンの結果であるIQueryableです。
修正は、式でレコードをキャストすることです:(IQueryable <record>)Records。それを見つけて、それは完全に理にかなっています。レコードは入力されないため、r.Record_IDが有効な場合、LINQには手がかりがありません。混乱はエラーメッセージであり、これは「ネット上に何十もの場所に表示されます。ほとんどすべての場合、ソリューションは2つのusing句の1つが欠落しています。私が見つけた1つか2つは使用上の問題ではなく、それを修正したものを投稿することを気にしませんでした。
お役に立てれば...
私の問題はフォーマットに関係していました:
.Columns(columns => {
columns.Bound(p => p.Id).Filterable(false);
columns.Bound(p => p.Name).Width(250);
...
このエラーが発生したすべてのp.Whatever。
これはMVCを使用したプロジェクトで、モデルのこれらの変数(Id、Nameなど)に「public static int」または「public static string」が含まれていることが問題であることがわかりました。すべてのモデル変数の「静的」を削除しても、エラーは発生しません。約1日私を夢中にさせていました...
私は似たような問題を抱えていましたが、Rxと私の場合は追加しました
using System;
助けた。 FWIW
これらの拡張メソッドが欠落していると、面倒なことが時々あります。
わずかに異なるバージョンでこの問題が発生しました。
ラムダ内から(静的)メソッドを呼び出す必要がある場合、戻り値の型を確認してください。戻り値の型がIEnumerable(ラムダを使用している場合によくある)である必要があるが、オブジェクトを返す場合、明らかに問題があります。
列をTelerik MVCグリッドにバインドするのと同様の問題がありました。 ViewModelクラスにIdプロパティがありました。 (上記のChrisの回答に触発されました)XxxIdに名前を変更すると、問題はなくなりました。 MVCがIdプロパティに対して特別なことをしていることを思い出すようです。
私の場合、Sharepoint 2013アプリでclientContext.Loadにインクルードを使用しようとすると、このエラーが発生しました。
次のようなSharepointクライアントライブラリを含めました。
using SP = Microsoft.SharePoint.Client;
修正するために、さらに名前空間なしで追加しました:
using Microsoft.SharePoint.Client;
using SP = Microsoft.SharePoint.Client;
System.Linqを使用してみてください。この問題を解決するのに役立つと思います。