10

エンティティ フレーム ワークを使用して、データベース内の日付を呼び出します。しかし、このエラーを与える私の以下のコード

LINQ to Entities はメソッド 'SchoolBreifcase.Compliance get_Item(Int32)' メソッドを認識せず、このメソッドはストア式に変換できません。

ここに私の完全なコードがあります

FinancialCompliance financialCompliance = new FinancialCompliance();
            List<Compliance> compliance = null;
            if (HttpContext.Current.User.IsInRole("SchoolAdmin"))
            {

                compliance = datamodel.Compliances.Where(u => u.UserId == userId).OrderBy(c => c.AddedDate).ToList();

            }
            if (HttpContext.Current.User.IsInRole("User"))
            {
                compliance = datamodel.Compliances.Where(u => u.VerifierId == userId || u.OwnerId == userId).OrderBy(c => c.AddedDate).ToList();
            }
            if (compliance != null)
            {
                for (int i = 1; i < compliance.Count; i++)
                {
                    financialCompliance = datamodel.FinancialCompliances.Where(f => f.ComplianceId == compliance[i].ComplianceId).SingleOrDefault();
                    if (compliance.Count == i)
                    {
                        return financialCompliance;
                    }
                }
            }
            return financialCompliance;
        }

この行はそのエラーを与えます:

financialCompliance = datamodel.FinancialCompliances.Where(f => f.ComplianceId == compliance[i].ComplianceId).SingleOrDefault();

スタックオーバーフローの回答には役立ちません このスタックオーバーフローサイトでいくつかの回答を見つけました

LINQ to Entities がメソッドを認識しない

など..しかし、私には役に立たない.だから私はこの質問をした. すでに質問されているという理由で、誰もこの質問を閉じないでください

4

2 に答える 2

13

compliance[i].ComplianceId参照する変数を作成して、後で使用する必要があります。

for (int i = 1; i < compliance.Count; i++)
{
    var complianceId = compliance[i].ComplianceId;
    financialCompliance = datamodel.FinancialCompliances.Where(f => f.ComplianceId == complianceId ).SingleOrDefault();
    if (compliance.Count == i)
    {
        return financialCompliance;
    }
}
于 2013-04-04T13:08:38.647 に答える
11

についてcompliance[i].ComplianceIdです。最初に変数を作成します。

var id = compliance[i].ComplianceId;

financialCompliance = datamodel.FinancialCompliances
                      .Where(f => f.ComplianceId == id).SingleOrDefault();
于 2013-04-04T13:07:08.747 に答える