2011-07-06 2 views
4

私がしようとしていることは、後でデータバインドに使用するクエリの結果を絞り込むことです。私は、私のgridviewで使用されているすべてのProgramIdを取得し、私のドロップダウンリストのデータソースから削除する(つまり、ユーザーが作成して、同じProgramIdのgridviewにオブジェクトを挿入することはできませんLINQクエリが動作しない以外は、リストとリスト<long>

var query = from goals in DataContext.Goals 
      select goals; 
var query2 = (from goals in query.AsEnumerable() 
       select goals.ProgramId).ToList(); //List<long?> 
var query3 = (from progs in DataContext.Programs 
       select progs.ProgramId).ToList(); //List<long> 
var cgps = query3.Except(query2); 

そして、私はvar cgps = query3.Except(query2);にこれらのエラーを取得しています::)

が存在するここではいくつかのコードです

エラー29 'をSystem.Collections.Generic.List' の定義が含まれていません。 '例外'と最適な拡張メソッドオーバーロード 'System.Linq.ParallelEnumer ... \ Shmeh \ Shmeh \ Shmeh \ this.aspx.cs 24 226プロジェクト

エラー30インスタンス:able.Except(System.Linq.ParallelQuery、System.Collections.Generic.IEnumerable)」は、いくつかの無効な引数Cを持っています引数: 'System.Linq.ParallelQuery' C 'にSystem.Collections.Generic.List' から変換することはできません... \ Shmeh \ Shmeh \ Shmeh \ this.aspx.cs 24 226プロジェクト

あなたの場合私がしようとしていることをどのようにして有効にするか考えてください。どんな助けでも大歓迎です!ありがとう!

答えて

8

ExceptにプログラムIDを変換している配列が同じタイプの両方である必要があります。 long?longリストをキャストしてみてください。

var query3 = (from progs in DataContext.Programs 
       select (long?)progs.ProgramId).ToList(); //List<long?> 
5

long?longと同じタイプではないため、このエラーが発生しています。 Exceptでは、両方の列挙可能オブジェクトが同じ型であることが必要です。あなたは何ができるか

がQUERY2からNULL値を削除し、long

var query2 = (from goals in query.AsEnumerable() 
       where goals.ProgramId.HasValue 
       select goals.ProgramId.Value).ToList() 
1
var cgps = DataContext.Programs.Select(p => p.ProgramId) 
    .Except(DataContext.Goals.Where(g => g.ProgramId.HasValue).Select(g => g.ProgramId.Value)); 
0

これはあなたのために動作するかどうか、私は知りません。

var query2 = (from goals in query.AsEnumerable() 
       select goals.ProgramId).ToList() as List<long?>; 

var query3 = (from progs in DataContext.Programs 
       select (long?)progs.ProgramId).ToList() as List<long?>; 
0

彼/彼女は自分の答えを削除した理由を私は知らないが、私はこれを使用しています:

dropdownlist.DataSource = (
      from progs in DataContext.Programs 
      where !(from goals in query.AsEnumerable() 
        select goals.ProgramId) 
        .Contains(progs.ProgramId) 
      select progs.Name).ToList(); 
dropdownlist.DataBind(); 

それは複数のクエリ変数を使用するために私を必要としないので

、答えたが私は受け入れられたものと同様に受け入れられました。

2

try

var cgps = query3.Cast<long?>().Except(query2); 
関連する問題