2017-12-22 7 views
0

C#プログラムでLINQを使用してデータベースから情報を取得しようとしています。私は基本的な高度なクエリを示す例をたくさん見つけましたが、ビルドしようとするとエラーが発生します。 LINQlinqデータベースモデルからデータを取得する方法

public class StdFy 
{ 
    public object GetStdFy(DrillholeEntities ddb) 
    { 
     try 
     { 
      var myList = ((from t1 in ddb.DTM_QAQC_BLK_STD from t2 in ddb.DTM_STANDARDSASSAY.Where(x=> t1.STANDARDID==x.STANDARDID && t1.ASSAYVALUE==x.STANDARDVALUE) 
          select new 
          { 
           CHECKID = t1.CHECKID, 
           STANDARDID = t1.STANDARDID, 
           PRIORITY = t1.ASSAY_PRIORITY, 
           NAME = t1.ASSAYNAME, 
           ASSAYVALUE = t1.ASSAYVALUE, 
           STANDARDVALUE = t2.STANDARDVALUE, 
           STANDARDDEVIATION = t2.STANDARDDEVIATION, 
           NORMALIZACION = (t2.STANDARDVALUE- t1.ASSAYVALUE)/ t2.STANDARDDEVIATION, 
           LABJOBNO = t1.LABJOBNO, 
           LOADDATE = t1.RETURNDATE 


          })).OrderBy(x => x.LOADDATE).ToList(); 

      return myList; 
     } 
     catch (Exception) 
     {    
      throw new NotImplementedException(); 
     } 
    } 
} 

、その後

DrillholeEntities ddb; 
StdFy stdFy = new StdFy(); 
using (ddb = new DrillholeEntities()) 
       { 

        IOrderedEnumerable<DTM_QAQC_BLK_STD> datosTodos; 
        datosTodos = stdFy.GetStdFy(ddb); 
       } 

で クラスを、私はプロジェクトをbuuildとき、私はエラーに

重大度コード説明プロジェクトファイルの行を取得する:下の基本的なLINQの例を参照してください。 Suppression State エラーCS0266 'オブジェクト'の型を暗黙的に 'System.Linq.IOrderedEnumerable'に変換できません。 明示的な変換が存在する(?あなたは キャストが欠落している)Inspinia_MVC5 C:プロジェクト\ MVC5_Full_Version \ Inspinia_MVC5 \コントローラ\ Visual Studioの 2015 \ \ Users \ユーザーchachl9 \ドキュメント\ GraphsController.cs 55アクティブ

+0

問い合わせから返されるタイプは匿名です。これは 'DTM_QAQC_BLK_STD'にキャストできません。クエリを変更する必要があります: 'select new DTM_QAQC_BLK_STD {...}'。 – JohnyL

+0

しかし私は私のクエリで2つのテーブルを持っていますが、私はiaを実行するだけでDTM_QAQC_BLK_STDを使用して変更するとエラーが発生します –

+0

DTM_QAQC_BLK_STDが必要です。 – JohnyL

答えて

0

あなたがいます

これは、あなたのメソッドの戻り値の型としてオブジェクトを使用する理由かもしれません。 戻り値を特定の型に割り当てるよりも、例外がスローされる理由はそうです。

この作業を行うには、必要なすべてのプロパティを含む新しいクラスを実装します。

select new MyNewClass { Property1 = ...} 

オブジェクトからIEnumerable<MyNewClass>にメソッドの戻り値の型を変更します。戻り値を代入する変数も同様です。


Gert Arnoldのコメントのように、PascalCaseプロパティも使用する必要があります。

また、select from in where LINQ構文とLambdaメソッド.Where(x => ...)を混在させると、読みにくくなります。

関連する問題