Поиск в списке .Net 3.5, аналогичный SQL - столбец в (value1, value2, ..., valuen) - PullRequest
0 голосов
/ 24 июня 2010

у меня есть List<ColumnDiff> columnDiffList

из

  public class ColumnDiff
    {
        public string columnName;
        public string leftValue;
        public string rightValue;
    }

Мне нужно определить, есть ли элементы, где columnName либо "A", "B", "C" Нет необходимости извлекать подсписок.

В терминах SQL
columName in ('A', 'B', 'C')

Как кодировать это в LINQ

Ответы [ 3 ]

2 голосов
/ 24 июня 2010

Может быть, это то, что вам нужно:

var searchList = new[] {"A", "B", "C"};
var result = columnDiffList.Where(i => searchList.Any(j => j == i.columnName));

Итак, сначала определите список вещей, которые вы хотите найти, а затем используйте его для поиска по вашему списку (columnDiffList).

1 голос
/ 24 июня 2010

Есть несколько способов, вот простой пример:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<ColumnDiff> columnDiffs = new List<ColumnDiff>();
            columnDiffs.AddRange(new[]  {
                                             new ColumnDiff(){columnName="Aa"}
                                            ,new ColumnDiff(){columnName="A"}
                                            ,new ColumnDiff(){columnName="B"}
                                            ,new ColumnDiff(){columnName="Bb"}
                                            ,new ColumnDiff(){columnName="C"}
                                            ,new ColumnDiff(){columnName="Cc"}
                                        });

            bool hasItems = columnDiffs.Exists(x => x.columnName == "A" || x.columnName == "B" || x.columnName == "C");
            hasItems = columnDiffs.Any(x => x.columnName == "A" || x.columnName == "B" || x.columnName == "C");
            hasItems = columnDiffs.FirstOrDefault(x => x.columnName == "A" || x.columnName == "B" || x.columnName == "C") != null;

            Console.ReadKey();
        }
    }

    public class ColumnDiff
    {
        public string columnName;
        public string leftValue;
        public string rightValue;
    }
}
0 голосов
/ 24 июня 2010
var res = from c in columnDiffList where c.columnName == "A" || c.columnName == "B" select c;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...