2012-03-21 3 views
2

私はちょっとした簡単なlinq2sql文を使っていますが、クラスで使うのは初めてです。私はちょうどレビュークラスにlinqステートメントを入れ、私のコンボボックスを埋めるためにfrmMainクラスから呼び出す。私はそれがいくつかのプロパティを使用する必要があり、以下のコードは非常に間違っていることを知っていますが、どんな助けも高く評価されますこの場合おかげlinq2sqlのクエリから返す方法

public partial class frmMain : Form 
{ 
    Review r = new Review(); 
    r.getEmp(); 
    cboEmployee.DataSource = emps 
} 

class Review : frmMain 
{ 
    private "return type?" getEmp() 
    { 
     using (DataClasses1DataContext db = new DataClasses1DataContext()) 
     { 
      var emps = (from emp in db.employees 
         where emp.active == true 
         orderby emp.name 
         select emp.name.Substring(0, 20)).ToList(); 
      return emps; 
     } 
    } 
} 

答えて

2

は、戻り型は、List<string>またはそれが実装インタフェースのいずれかであるべきです。あなたはまた、呼び出し元のコードで何かに戻り値を代入する必要が

Review r = new Review(); 
var newDataSource = r.getEmp(); 
cboEmployee.DataSource = newDataSource; 

または単に一般的に

Review r = new Review(); 
cboEmployee.DataSource = r.getEmp(); 

、メソッドの戻り値の型は、のタイプでなければなりませんメソッドから返された値、またはその値のスーパータイプです。 ToList()呼び出しの結果を返すので、メソッドの戻り値の型はそれと互換性がなければなりません。

あなたの呼び出しコードでは、可変スコープで混乱しているようです。 emps変数は、getEmpメソッドのローカル変数です。そのメソッドの外側には表示されません。

getEmpは呼び出されたクラス以外のクラスで定義されているため、internalまたはpublicである必要があります。したがって、呼び出し元のクラスで表示されるようになります。または、単にReviewクラスではなくfrmMainクラスのgetEmpメソッドを定義します。あなたは最初にレビュークラスが必要ですか?

上記の最初のスニペットは、別のローカル変数(私は​​と呼んで混乱の可能性を減らすため)を返し、その変数の値をcboEmployee.DataSourceに割り当てます。 2番目のサンプルは、中間割当てをスキップします。

+0

どのように取得および設定して、今プライベートデータを保持することができますか? –

+0

@ adam355あなたはどのようなデータを非公開にしようとしていますか、どこで取得と設定を使用していますか? – phoog

+0

まだありません。私はgetEmpメソッドをベストプラクティスとして、別のクラスに入れたままにしておくべきだと思っていました。私が間違っている?私はかなり新しいコーダーです –

2
private List<string> getEmp() 
{ 
    using (DataClasses1DataContext db = new DataClasses1DataContext()) 
    { 
     var emps = (from emp in db.employees 
        where emp.active == true 
        orderby emp.name 
        select emp.name.Substring(0, 20)).ToList(); 
     return emps; 
    } 
} 

はその後ComboBoxDataSourceを設定します。

cboEmployee.DataSource = r.getEmp(); 
+0

ありがとう! getEmpは保護レベルのためにアクセス不能なので、どのようにプロパティを実装しますか? –

+0

@ adam355メソッドをパブリック(または内部)にします。プライベートではありません。 – phoog

+0

それを公にするには悪いプログラミングではないですか? –

関連する問題