2

データベーステーブルに一連のレコードがあり、次のように定義されているコンポーネントテーブルと呼ぶことができます

管理者は、テーブルの最後の列であるdisableflagを使用して、一部のコンポーネントを無効にすることができます。特定のコンポーネントが無効になっている場合、そのコンポーネントはユーザーのグリッドビューに表示されません。

SNo値が順番になっていないことを確認すると、データベースからデータを取得し、ここに示すようにグリッドビューを介して表示しています。

データを取得するために使用しているlinqクエリは次のとおりです。

var gridViewResults = from results in db.Components where results.DisableFlag == false
               select  new { SNo = results.SNo, ComponentNames = results.Component_Name, Size =   results.Size__in_MB_, Price = results.Price__in_SEK_, TotalDownloads = results.Total_Downloads, Description = results.Description };

ただし、データベーステーブルのSNO値に依存せずに、SNoが1、2、3、4であることを意味する順序でデータを表示する必要があります。参考のために、これを参照してください。

これを実現するためにlinqクエリを使用する方法を理解できません。

私はこのクエリを試しました:

(db.Components.AsEnumerable().Select((iterator)=> new{iterator.SNo + 1}) 

しかし、それはばかげていると思います。誰かがこれについて私を助けることができますか?

期待してくれてありがとう。

4

2 に答える 2

2

データベース番号を無視したいという確信がある場合(実際には何にも対応していないのに、なぜ番号を出力するのですか?)、次のことを試すことができます。

var gridViewData = from results in db.Components
                   where results.DisableFlag == false
                   select new
                   {
                     ComponentNames = results.Component_Name,
                     Size = results.Size__in_MB_,
                     Price = results.Price__in_SEK_,
                     TotalDownloads = results.Total_Downloads,
                     Description = results.Description
                   };

var gridViewResults = gridViewData.AsEnumerable().Select((item, index) => new
                      {
                         SNo = index + 1,
                         ComponentNames = item.ComponentNames,
                         Size = item.Size,
                         Price = item.Price,
                         TotalDownloads = item.TotalDownloads,
                         Description = item.Description
                      });

編集: Linqクエリ結果に行番号を投影する方法からの代替ソリューション

EDIT2:SQLによるサポートされていない選択の修正:Linqエラー-「NotSupportedException:クエリ演算子「選択」に使用されるサポートされていないオーバーロード」

于 2011-05-03T19:49:33.447 に答える
1

こんにちは、ここにいる皆さんが最終的な答えです。ジョシュアはすべての仕事をしました。彼に感謝します。将来のために同じ問題を抱えている人への答えを強調したいだけです。誰かが投票したい場合は、ジョシュアに投票してください

var gridViewData = from results in db.Components
                           where results.DisableFlag == false
                           select new
                           {
                               ComponentNames = results.Component_Name,
                               Size = results.Size__in_MB_,
                               Price = results.Price__in_SEK_,
                               TotalDownloads = results.Total_Downloads,
                               Description = results.Description
                           };

        var gridViewResults = gridViewData.AsEnumerable().Select((item, index) => new
        {
            SNo = index + 1,
            ComponentNames = item.ComponentNames,
            Size = item.Size,
            Price = item.Price,
            TotalDownloads = item.TotalDownloads,
            Description = item.Description
        }).ToList();

これはうまくいくはずです。

于 2011-05-03T20:33:14.043 に答える