2009-11-06 28 views
5

Tôi có một FormCollection và tôi chỉ muốn lặp qua các khóa không chứa giá chuỗi.Biểu thức LINQ để lọc formcollection

Vì vậy, những gì tôi đã cố gắng là này ...

foreach (var key in collection.AllKeys.Where(k => !k.Contains("Pricing"))){ ... } 

Vấn đề là sự trở lại không phải là một danh sách lọc của nó trở về giá trị boolean ... trong đó có nhu cầu danh sách lọc của chuỗi ...

AllKeys trả về một string [] như vậy trong một cảm giác tôi chỉ cố gắng để lọc một string [] ở đây ...

Những gì tôi đang mất tích ở đây ...

cảm ơn nhiều!

+0

Điều đó có vẻ ổn với tôi - không chắc chắn lý do tại sao bạn sẽ nhận được một loạt các giá trị boolean. Bạn đã thử kiểm tra var để xem loại đó là gì? – JustLoren

+0

@JustLoren, biến 'key' được khai báo trong vòng lặp' foreach' là kiểu 'string' vì phương thức mở rộng' Where' trả về một 'IEnumerable ', vì vậy bạn chỉ ra chính xác rằng không thể nhận các giá trị boolean từ mã này. Phương thức –

+0

@gmcalab, 'string.Contains (string)' phân biệt chữ hoa chữ thường. Đây có phải là vấn đề không? –

Trả lời

10

Dưới đây là câu trả lời ...

foreach (var key in collection.AllKeys.Where(k => !k.Contains("Pricing")).ToArray<string>()){ ... } 
-1

Bạn có chắc chắn rằng bạn đang sử dụng Where và không Select?

Sử dụng Where sẽ trả lại IEnumerable<string> đó là những gì bạn đang mong đợi.

Sử dụng Select sẽ trả về IEnumerable<bool> đó là những gì bạn nói thực sự đang diễn ra.

+0

Trường hợp không trả lại số điện thoại có thể truy cập được Tôi đã thử ... string [] list = collection.Where (o =>! O.Contains ("Pricing")); Và nó không biên dịch nói rằng kiểu trả về là một bool .... Tôi đã tìm ra câu trả lời và đăng nó. – Gabe

+1

@gmcalab: Nếu 'collection' là' FormCollection'/'NameValueCollection' thì mệnh đề' Where' của bạn chắc chắn sẽ trả về 'IEnumerable '. – LukeH

+0

1 @Luke, đâu thực sự sẽ trở lại IEnumerable foreach (key chuỗi trong Request.Form.AllKeys.Where (k =>! K.Contains ("Giá cả"))) {} IEnumerable bộ sưu tập = Yêu cầu .Form.AllKeys.Where (k =>! K.Contains ("Pricing")); Cả hai biên dịch đều hoàn hảo. –

Các vấn đề liên quan