2014-07-01 14 views
-3

我有一個SelectList,當Text值爲emptyOrNull時,我需要過濾掉嗎?我很努力使這個工作。有任何想法嗎?我已經試過這如何過濾MVC SelectList以刪除不需要的值

示例代碼

// My list - this is valid code 
SelectList list = model.MySelectList; 

// But when I try this I get the following error message? 
SelectList test = list.Where(x => x.Text != ""); 

我收到以下編譯器錯誤信息

錯誤

Error convert source .. IEnumerable<SelectListItem> to target type SelectList 

更新 - 我需要過濾掉值,即我需要類似

foreach (var item in list) 
{ 
    if (string.IsNullOrEmpty(item.Text)) 
    { 
     // remove item from list 
    } 
} 

// Then list does not include any items with a Value which is null or empty 

UPDATE

進行以下更改後,代碼編譯,但我在所呈現的下拉獲得 'Select.Web.Mvc.SelectListItem'。

new SelectList(list.Where(x => x.Text != "")); 

請指教,非常感謝,

回答

0

您可以通過兩種方式來完成,

(I)。只得到這不爲空或不爲空使用LINQ

List<SelectListItem> test = list.Where(item => item.Text != null || !(item.Text.Equals(string.Empty))).ToList(); 

值(II)。第二方法是找到值從原來的

List<SelectListItem> filedNullOrEmpty = list.Where(item => item.Text == null ||  item.Text.Equals(string.Empty)).ToList(); 
    foreach (Select selobj in filedNullOrEmpty) 
    { 
    list.Remove(selobj); 
    }  
+0

謝謝你,這返回的項目,但我怎麼能過濾我們這些項目?謝謝, – user3773890

+0

從哪裏過濾? – Sajeetharan

+0

看到我更新的問題。 – user3773890

0

Enumerable.Where回報IEnumerable<T>,不SelectList刪除 - 嘗試使用此constructor

SelectList test = new SelectList(list.Where(x => !String.IsNullOrEmpty(x.Text))); 
+0

感謝您的這一點,請參閱我的更新在我的問題 – user3773890

0

它的發生是因爲。凡()返回IEnumerable的。您應該轉換爲SeletList類型。

一種選擇的是.Where(x => x.Text != "").Select(new SelectListItem(){Text = x.Text, Value = x.Value});

0

選擇列表的構造函數接受一個I​​Enumerable因此,所有你需要做的是通過LINQ查詢到構造像這樣

var query = from c in source 
       where c.Key != "" 
       select c; 

var customerList = new SelectList(query, "DataTextField", "DataValueField"); 

希望我能幫助你。

+0

謝謝,但我得到一個運行時錯誤:DataBinding:'System.Web.Mvc。SelectListItem'不包含名稱爲'DataTextField'的屬性。 – user3773890

+0

「DataTextField」是您的動態字符串,就像您的綁定選擇列表項的Key一樣,「DataValueField」字符串也是如此。 –