2

次のエラーが発生しました: 例外の詳細: System.NotSupportedException: タイプ 'FileCombined' の定数値を作成できません。このコンテキストでは、プリミティブ型または列挙型のみがサポートされています

次のコードを使用しています。

var o1 = new FileCombined (){ ScholarshipID = 3, FileDescription = "smt" };
var o2 = new FileCombined() { ScholarshipID = 10, FileDescription = "smt" };

List <FileCombined> list = new FileCombined[] { o1, o2 }.ToList();

var data = (from scholarship in db.ScholarshipRequests  
            join file in list on scholarship.ScholarshipRequestID equals file.ScholarshipID
            select new { ScholarshipID = scholarship.ScholarshipRequestID, FileDescription = file.FileDescription }).ToList();

linq 式の順序を変更すると、クエリは正常に機能します。

var o1 = new FileCombined (){ ScholarshipID = 3, FileDescription = "smt" };
var o2 = new FileCombined() { ScholarshipID = 10, FileDescription = "smt" };

List <FileCombined> list = new FileCombined[] { o1, o2 }.ToList();

var data = (from file in list
            join scholarship in db.ScholarshipRequests on file.ScholarshipID equals scholarship.ScholarshipRequestID  
            select new FileCombined (){ ScholarshipID = scholarship.ScholarshipRequestID, FileDescription = file.FileDescription }).ToList();

誰かが解決策を説明または見つけることができますか? 連続コードにはより複雑なクエリがあるため、最初のクエリが機能する必要があります

4

2 に答える 2

2

@Maarten の回答に追加するには、 join を削除して を使用することもできますContains。これは、あなたの場合は同じ結果が得られるためです (listが大きくなることはないと思います)。次に、リストで を検索できますFileDescription(辞書を作成することもできます)。

var list2 = list.Select(x => x.ScholarshipID);
var data = (from scholarship in db.ScholarshipRequests
            where list2.Contains(scholarship.ScholarshipRequestID)
            select new { ScholarshipID = scholarship.ScholarshipRequestID }).ToList();
// do the lookup in "list" and get result
于 2013-10-23T12:21:38.030 に答える