1

次の EF ラムダ式に問題があります。

partial void StatusCallBackRequired_PreprocessQuery(ref IQueryable<PatientsTelephoneFollowupDetail> query)
{
    var newList = PatientsTelephoneFollowupDetails.OrderBy(x => x.Id).ToList();
    query = query.Where(p => p.PatientsMasterItem.PatientsTelephoneFollowupDetail.OrderByDescending(c => c.Id).FirstOrDefault(c => c.Status == "7") != null);
 }

エラーは次のとおりです。

'Microsoft.LightSwitch.IOrderedDataServiceQueryable' には 'ToList' の定義が含まれておらず、タイプ 'Microsoft.LightSwitch.IOrderedDataServiceQueryable' の最初の引数を受け入れる拡張メソッド 'ToList' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか? ?)

system.linq 名前空間は既に含めています。

編集:(D Stanley コードに基づく結果)

サンプル データは以下にあります。強調表示されたレコードを取得しようとしています。 ここに画像の説明を入力

ただし、現在の出力は

ここに画像の説明を入力

クエリを query.select に変更すると、1 つのレコードのみが返されますが、これは間違ったレコードです。

4

2 に答える 2

0

試すべきことがいくつかあります:

キャスト先IEnumerable<T>

var newList = ((IEnumerable<PatientsTelephoneFollowupDetail>)PatientsTelephoneFollowupDetails.OrderBy(x => x.Id)).ToList();

クエリ結果からリストを初期化します。

var newList = new List<PatientsTelephoneFollowupDetail>(PatientsTelephoneFollowupDetails.OrderBy(x => x.Id)));

編集 LightSwitchは実装されていないようIEnumerable<T>です。さらに2つのことを試してください。

それが実装されていると仮定してIEnumerable、使用しますIEnumerable.Cast<T>()

var newList = new List<PatientsTelephoneFollowupDetail>(
    PatientsTelephoneFollowupDetails.OrderBy(x => x.Id)
        .Cast<PatientsTelephoneFollowupDetail>()
    );

強引な:

var newList = new List<PatientsTelephoneFollowupDetail>();
foreach(var item in PatientsTelephoneFollowupDetails.OrderBy(x => x.Id))
    newList.Add(item);
于 2012-04-05T03:50:50.993 に答える
0

このタイプの定義を見つける必要があります。Microsoft.LightSwitch.IOrderedDataServiceQueryable

見つけたら、次のことを確認します。

実装していますIEnumerable<T>か?その場合、コードはに到達できませんSystem.Linq.Enumerable。System.Linqを使用していると言うので、プロジェクトがを参照していることを確認してくださいSystem.Core.dll

そうでない場合、それは実装されていIEnumerableますか?もしそうなら、あなたはforeachループを書いて、List<T>あなたが作るものに各アイテムを加えることができます。

そうでない場合は、プロパティを調べます。通常、ループを作成できるものに到達する方法がいくつかあります。

于 2012-04-05T03:52:50.503 に答える