2013-03-05 13 views
10

GridViewを入力するlinqクエリがPage_Loadにあります。私はforアルファベットの文字のループを作った。 LinkButtonが入力されるLinkButton.Commandでは、クエリの同じパラメータを使用して非常に似たクエリを実行しており、以下のエラーが発生しています。匿名の種類が両方のエラーに表示される

"<> f__AnonymousType2が 'ConcernContracts.dll' と 'System.Web.WebPages.Deployment.dll'

void lnkCharacter_Command(object sender, CommandEventArgs e) 
{ 
    try 
    { 
     var lbtn = (LinkButton)lbl_Alphabet.FindControl("lnkCharacter" + e.CommandArgument); 
     var id = lbtn.Text; 

     using (var db = new dbDataContext()) 
     { 
      var query = from n in db.tbl_Providers 
         where ((n.provider_Name.StartsWith(id)) && (n.provider_Deleted == false)) 
         select new 
         { 
          n.ProviderId, 
          n.provider_Name 
         }; 

      grd_Provider.DataSource = null; 
      grd_Provider.DataSource = query; 
      grd_Provider.DataBind(); 
     } 
    } 
    catch (SystemException ex) { } 
} 

LoadGrid(両方に存在するタイプ)は、同じです条件は.StartsWith()ではありません。 エラーの解決方法はありますか?

エラーは例外をスローしませんが、どちらのクエリでもグリッドにデータを入力しません。エラーは、次の行に発見された:ここではgrd_Provider.DataSource = query;

+0

プロジェクトは同じソリューションですか?彼らは同じ名前空間を持っていますか? –

+1

リビルド、クリーン、ビルド。 – Bastardo

+0

はい、同じソリューションです。クエリは同じページにあります。 – StudentRik

答えて

2

変更グリッドのデータソース

grd_Provider.DataSource = query.ToList(); 
grd_Provider.DataBind(); 

または作成リストとしてバインドされます

IEnumerable<object> 

に戻り値の型を変換することができますProvider IdとNameという2つのプロパティを持ち、出力からこのリストをバインドします このようにします。

List<Entities> abc=query.ToList(); 
grd_Provider.DataSource =abc; 
grd_Provider.DataBind(); 
1

は提案です:

あなたの2つの類似したクエリは、おそらくあなたはLINQクエリで選択されている匿名型の上に重なっています。あなたがこれを行う場合は、匿名型はもう競合してはならない

select new 
     { 
     Id = n.ProviderId, 
     Name = n.provider_Name 
     }; 

あなたは変更しない1が使用するために、:1およびクエリの一つだけでは、このように見えるように選択し、新規を変更デフォルトの名前。

幸運にも、これが助けてくれることを願っています! ListまたはIEnumberable

+0

私はページ上に別のグリッドを作成し、そのグリッドをポーリングしようとしましたが、私はクエリが既に 'LoadGrid()'で実行されていたのかどうか疑問に思っていました。私はこのフィルターを達成する別の方法が必要です。 – StudentRik

0

変換それは、あなただけのGridViewにデータソースとして匿名オブジェクトを渡すことはできません。 query.ToList();

あなたはそれがどんな匿名型を保持することができ、簡単にデータソース

+0

これを説明できますか? [LinqはIEnumerableです。](http://msdn.microsoft.com/en-us/library/bb397919.aspx)「LINQ to Objects」という用語は、任意のIEnumerableまたはIEnumerable コレクションでのLINQクエリの使用を指します' – Harrison

-1

Linqは.toDays()、。addDays(),. StartsWith()などの機能をサポートしていません。あなたがする必要があるのは、最初に.StartsWith()を使用せずに結果を取得し、結果をフィルタリングするためにいくつかの機能を適用しようとします。

0

私は同じ問題があり、別のプロパティを匿名型に追加して解決しました。

関連する問題