2011-10-28 3 views
0

を作成するとき、私は、データベースを照会するLinq2SQLを使用して、簡単なWP7データベースアプリを開発しようとしているが、今日、私は内部コンパイラエラーを受信するために管理:(陵ツーSQLコンパイラエラー辞書

簡略化インテリセンスがないにもかかわらず、これはコンパイルエラーのいかだにつながるような新しいDictionaryを作成しようとしている、しかし

var query = 
(
    from x in MyTable 
    join y in MyOtherTable on x.Key equals y.Key 
    where SqlMethods.Like(x.Field, "%" + searchTerm + "%") 
    select new Results 
    { 
    MyResultField = new Dictionary<MyEnum,string>() 
    { 
     { MyEnum.Value, x.Field }, 
     { MyEnum.OtherValue, y.Field } 
    }, 
    ... 
    } 
); 

:私のクエリのバージョンは以下の通りです(Resultsは私の検索結果データを保持するクラスです)オブジェクトを検索しましたが、私は検索しましたが、01を作成せずに同様の結果を得る方法がわかりませんこの時点で。

絶望的な初心者のためのアイデアは何ですか?事前に多くの感謝!

更新

申し訳ありませんが、私は、コンパイラエラーを含めるのを忘れていました。別に#6から、彼らは私にはちんぷんかんぷんだが、それは...

# Error 1 Internal Compiler Error: stage 'BEGIN' MyProject 
# Error 2 Internal Compiler Error: stage 'EMIT' MyProject 
# Error 3 Internal Compiler Error: stage 'COMPILE' MyProject 
# Error 4 Internal Compiler Error: stage 'COMPILE' C:\...\ViewModel.cs MyProject 
# Error 5 Internal Compiler Error: stage 'COMPILE' symbol '<global namespace>' C:\...\ViewModel.cs MyProject 
# Error 6 Internal Compiler Error (0xc0000005 at address 681AB648): likely culprit is 'BIND'. 
# An internal error has occurred in the compiler. To work around this problem, try simplifying or changing the program near the locations listed below. Locations at the top of the list are closer to the point at which the internal error occurred. Errors such as this can be reported to Microsoft by using the /errorreport option. 
# MyProject 
# Error 7 Internal Compiler Error: stage 'COMPILE' symbol 'ChineseClassmate' C:\...\ViewModel.cs 12 11 MyProject 
# Error 8 Internal Compiler Error: stage 'COMPILE' symbol 'ChineseClassmate.MyProject' C:\...\ViewModel.cs 12 11 MyProject 
# Error 9 Internal Compiler Error: stage 'COMPILE' symbol 'ChineseClassmate.MyProject.ViewModel' C:\...\ViewModel.cs 12 11 MyProject 
# Error 10 Internal Compiler Error: stage 'COMPILE' symbol 'MyProject.ViewModel.MyProjectViewModel' C:\...\ViewModel.cs 17 15 MyProject 
# Error 11 Internal Compiler Error: stage 'COMPILE' symbol 'MyProject.ViewModel.MyProjectViewModel.SearchDatabase(string)' C:\...\ViewModel.cs 57 15 MyProject 
# Error 12 Internal Compiler Error: stage 'COMPILE' symbol 'MyProject.ViewModel.MyProjectViewModel.SearchDatabase(string)' C:\...\ViewModel.cs 57 15 MyProject 
# Error 13 Internal Compiler Error: stage 'COMPILE' symbol 'MyProject.ViewModel.MyProjectViewModel.SearchDatabase(string)' C:\...\ViewModel.cs 57 15 MyProject 
# Error 14 Internal Compiler Error: stage 'BIND' symbol 'MyProject.ViewModel.MyProjectViewModel.SearchDatabase(string)' C:\...\ViewModel.cs 57 15 MyProject 
+0

"内部コンパイラエラー"。 "コンパイラエラーの筏"。コンパイルエラーが何であるかを正確に伝えない限り、誰かがあなたの問題を診断するのは本当に面倒です。 – LukeH

+0

申し訳ありませんルーク、あなたは正しいです!私は上記のエラーを追加しました。 – Superangel

答えて

1

を助け場合、私はあなたがこれを行うことができます信じていません。この呼び出しを有効なsqlに変換し、そこに新しいオブジェクトを使用することができなければなりません。db側ですべて実行するように変換できないため、失敗が発生すると思います。結果を得てから辞書(.ToDictionary())に変換する

+0

ありがとうございましたアダム、私はこれまで考えていませんでしたが、それは理にかなっていることがわかります。私はこの異なるアプローチを今作業します。 – Superangel

+0

ありがとう、アダム、それは完璧に動作します! – Superangel

1

各行の辞書を作成し、各辞書に同じ2つのキーしか持たないのはちょっと奇妙です。あなたが必死に多分にクエリの実行を強制した後、その後、匿名型の値を返すが、辞書を持っている必要があります場合は

var query = 
    from x in MyTable 
    join y in MyOtherTable on x.Key equals y.Key 
    where SqlMethods.Like(x.Field, "%" + searchTerm + "%") 
    select new Results 
    { 
     MyEnumValue = x.Field, 
     MyEnumOtherValue = y.Field 
     ... 
    }; 

:あなたはちょうどそうのような二つのフィールドを持っているResultsを修正する方がいいでしょう.ToArray()のように、既存の辞書コードでResultsオブジェクトを作成することができます。

こちらがお役に立てば幸いです。

+0

ありがとうございました!この方法は間違いなく簡単であり、 'Results'クラスが提供する値に応じて他のさまざまなプロパティを設定できるので、私は' Dictionary'を使っていました。とにかく、お時間をありがとう、私は間違いなくこれを覚えています。 – Superangel