2016-02-11 2 views
0

Я пытаюсь проверить значение списка строки в условии, не создавая для каждого или контур цикла.Как проверить список строковых значений в заявлении условия

Для примера

string extention = Path.GetExtension(attachment.Name).ToLower(); 

List<string> validExtentions = new List<string>() { ".tif", ".tiff", ".gif", ".jpeg", ".jif", ".png", ".pdf", ".txt", ".jpg" }; 

if(extention.Contains(validExtentions)) 
{ 

} 

Я думал, что я мог бы использовать .contains функцию, которая ожидает строку не список строки, поэтому он не будет работать.

ответ

3

Вам просто нужно перевернуть переменные. Вы проверить, если ваш extension содержатся в списке validExtensions:

if(validExtensions.Contains(extension)) 
{ 

} 
+0

Если вы объясняете переменный корпус? Может быть, 'validExtentions.Contains (extention, StringComparer.CurrentCultureIgnoreCase)'? –

+0

@roryap - Возможно, но ОП не упоминает, что им нужно беспокоиться о случае. Если это так, это тривиальный вопрос использования перегрузки «Содержит». –

+0

Я опускаю случай в расширении строки = Path.GetExtension (attachment.Name) .ToLower(); – EasyE

0

Как об этом ....

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Text.RegularExpressions; 

namespace EasyE 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     // Test strings 
     List<extention> extentions = new List<extention>() { 
      new extention { FileName = "File1.jif" }, 
      new extention() { FileName = "File2.TIFF" }, 
      new extention() { FileName = "File3.txt" } }; 
     /////////////// 

     Regex regex = new Regex(@"^.*\.(tif|tiff|gif|jpeg|jif)$",RegexOptions.IgnoreCase); 
     if ((from ext in extentions where (ext.FileName.ToString() == regex.Match(ext.FileName.ToString()).Value) select ext).Count() > 0) 
     { 

     } 
    } 
} 

class extention 
{ 
    public string FileName { get; set; } 
} 
} 
Смежные вопросы