2017-01-04 9 views
0

データベースから特定のユーザーからのみファイルを表示しようとしていますが、データベースからファイルをフィルタリングする方法がちょっと残っています。その罰金を表示、Viewbagstring[] files変数をバインドすると、そのすべてが表示されます。MVC IDでデータベースからファイルをフィルタ

public ActionResult DownloadPDF(string id) 
    { 
     var fileID = (from c in db.Files where c.UserID == id select c); 

     string[] files = Directory.GetFiles(Server.MapPath("~/FilesDB/PDF")); 
     for (int i = 0; i < files.Length; i++) 
     {    
      files[i] = Path.GetFileName(files[i]); 
     } 

     var specificFile = files.SingleOrDefault(x => x.Equals(fileID)); 

     ViewBag.Files = specificFile; 
     return View(); 
    } 

ありがとうございます!コールfiles.SingleOrDefault(x => x.Equals(fileID))について

+0

'VARのファイルID =(Cからdb.FilesでC .UserID == id c); ' - これはfileIDだけでなくファイル全体を選択していますか? – Alex

+0

確かにファイル全体ですが、それはうまく選択していますが、ファイルをダウンロードする方法を見つけただけですが、ビューにアクションリンクをトリガーするときにビューを表示していません。 – Eduard

+0

ああ、なぜあなたが尋ねたのか分かりませんでした。私はIDで選択しようとしましたが、そのような変数名を忘れました。 – Eduard

答えて

2

:すべてのxstringます

  • filesタイプstring[]であり、
  • は、
  • fileIDのような、LINQクエリの結果でありますIQueryable<SomeType>。つまり、単一のSomeTypeオブジェクトではなく、SomeTypeオブジェクトのコレクションを返すことができるオブジェクトです。全く異なるタイプのxfileIDされた状態で
  • x.Equals(fileID)がこれまでに真になることはできません。
  • それはあなたがこのような何かにLINQクエリを変更することにより、単一の文字列であることをファイルIDを変更することができるかどうかの作業を開始するかもしれません

string fileID = (
    from c in db.Files 
    where c.UserID == id 
    select c.FileID.ToString() 
    ).FirstOrDefault(); 
関連する問題