2011-07-14 4 views
2

私は基本的には次ていますLINQクエリのcase文 - AnonymousType to String?

public ActionResult Search(string searchString, string clientNo, int status = -1) 
{ 
    var statusLst = new List<string>(); 
    var statusNoQry = from b in db.Briefs 
         orderby b.Status 
         select new 
         { 
          status = (
          b.Status == 0 ? "Requested" : 
          b.Status == 1 ? "In Progress" : 
          "Undefined" 
          ) 
         }; 
    statusLst.AddRange(statusNoQry.Distinct()); <<--- ERROR HERE 
    ViewBag.status = new SelectList(statusLst); 

    var ClientNoLst = new List<string>(); 
    var ClientNoQry = from b in db.Briefs 
         orderby b.Client_No_ 
         where b.Client_Type == 0 
         select b.Client_No_; 
    ClientNoLst.AddRange(ClientNoQry.Distinct()); 
    ViewBag.clientNo = new SelectList(ClientNoLst); 

    var briefs = from b in db.Briefs 
       select b; 

    Session["searchString"] = searchString; 
    Session["clientNo"] = clientNo; 
    if (!String.IsNullOrEmpty(searchString)) 
    { 
     briefs = briefs.Where(s => s.Client_No_.Contains(searchString) || s.Name.Contains(searchString)); 
    } 

    if ((status > -1) && (status < 10)) 
    { 
     briefs = briefs.Where(y => y.Status == status); 
    } 

    if (string.IsNullOrEmpty(clientNo)) 
     return View(briefs); 
    else 
     return View(briefs.Where(x => x.Client_No_ == clientNo)); 
} 

はしかし、私は、次のエリアを受ける:

Error 7 Argument 1: cannot convert from 'System.Linq.IQueryable<AnonymousType#1>' to 'System.Collections.Generic.IEnumerable<string>' 

ステータスはint型ですが、私は私のDropDownListコントロールの文字列にキャストしたいと思います。私はこれにすべて新しいです、これを達成するための適切な方法は何ですか?

答えて

4

あなたのセレクタは、匿名型を返すされています

select new 
{ 
    status = (
    b.Status == 0 ? "Requested" : 
    b.Status == 1 ? "In Progress" : 
    "Undefined" 
    ) 
}; 

あなたはかかわらず、一連の文字列を返す必要があります。エラーは、問題の内容を正確に伝えています。

select 
    (b.Status == 0 ? "Requested" : 
    b.Status == 1 ? "In Progress" : 
    "Undefined"); 

編集 - あなたは方法の残りの部分を掲示していますが、あなたにも問題を引き起こす可能性があなたのコンテキストオブジェクトを、処分持っていないからいませんでした。通常これはusing句で囲みます。

+0

こんにちは、私は今、全メソッドを投稿しました。しかし、あなたが提案したことはそのトリックでした。 – KayBee