Что-то подобное sql оператору IN в платформе.NET?

Найдите фиксацию, которая удалила Ваш файл:

git log --diff-filter=D --oneline -- path/to/file | cut -f -d ' '

Демонстрационный вывод:

4711174

С Мерзавца 2.23 существует на самом деле restore команда. Это все еще экспериментально , но для восстановления чего-то, что Вы удалили в фиксации (4711174 в этом случае), можно тогда ввести:

git restore --source=4711174^ path/to/file

Примечание ^ после идентификатора фиксации, поскольку мы хотим восстановить что-то от фиксации прежде та, которая удалила файл.

--source аргумент говорит эти restore команда, где искать файл (файлы) для восстановления, и это может быть любая фиксация и даже индекс.

См.: документ восстановления мерзавца для мерзавца 2.23.0

6
задан Nick 3 September 2009 в 21:41
поделиться

8 ответов

Нет, я в это не верю, но вы могли бы написать такой метод расширения, который позволит вашему коду работать точно так, как написано.

public static bool In<T>(this T source, params T[] args) {
    return args.Contains(source);
}

Затраты на массив немного велики. . Возможно, вы захотите добавить особые случаи для меньшего фиксированного числа параметров.

5
ответ дан 8 December 2019 в 05:56
поделиться
new [] {10, 11, 12}.Contains(productTypeId)
11
ответ дан 8 December 2019 в 05:56
поделиться

Хм, вы можете сделать это:

public bool IsValidProduct(int productTypeId)
{
    bool isValid = false;

    if (new[] {10,11,12}.Contains(productTypeId))
    {
        isValid = true;
    }

    return isValid;
}

или, если хотите, то же самое короче:

public bool IsValidProduct(int productTypeId)
{
    return (new[] {10,11,12}.Contains(productTypeId));
}
3
ответ дан 8 December 2019 в 05:56
поделиться

Вы можете сделать что-то вроде:

new int[] { 10,11,12 }.Contains(productTypeID);

или пойти дальше и создать расширение для int в соответствии со строками:

public static bool In(this int i, params int[] ints)
{
    return ints.Contains(i);
}

С использованием:

if (productTypeID.In(10,11,12)) { ... }

Я бы не сказал, что они самый эффективный, но возможно да.

2
ответ дан 8 December 2019 в 05:56
поделиться

Я не думаю, что во фреймворке что-то есть, поэтому вам придется написать свой собственный метод расширения. Ближайшее, что вы можете получить с linq, - это что-то вроде:


if(new[] { 10, 11, 12 }.Contains(productTypeId)) { ... }
1
ответ дан 8 December 2019 в 05:56
поделиться

Вы можете использовать метод расширения Contains из .NET 3.5. Он работает со всеми перечисляемыми типами:

if (new [] { 10, 11, 12 }.Contains(productTypeId))
{
    ...
}
0
ответ дан 8 December 2019 в 05:56
поделиться

var validIds = new [] {10, 11, 12};
validIds.Contains (productId);

0
ответ дан 8 December 2019 в 05:56
поделиться

Это сработает, если все числа, которые вы хотите, находятся в диапазоне, не совсем функциональном "IN", но вы можете найти это полезным.

if (Enumerable.Range(10, 3).Contains(productTypeId))
0
ответ дан 8 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: