Добавить условия в Select Many, используя Linq

== проверяет ссылки на объекты, .equals() проверяет строковые значения.

Иногда кажется, что == сравнивает значения, потому что Java делает некоторые закулисные вещи, чтобы убедиться, что одинаковые строки в строке являются одним и тем же объектом.

Для Например:

String fooString1 = new String("foo");
String fooString2 = new String("foo");

// Evaluates to false
fooString1 == fooString2;

// Evaluates to true
fooString1.equals(fooString2);

// Evaluates to true, because Java uses the same object
"bar" == "bar";

Но будьте осторожны с нулями!

== обрабатывает строки null в порядке, но вызов .equals() из пустой строки приведет к исключению:

String nullString1 = null;
String nullString2 = null;

// Evaluates to true
System.out.print(nullString1 == nullString2);

// Throws a NullPointerException
System.out.print(nullString1.equals(nullString2));

Итак, если вы знаете, что fooString1 может но не менее очевидно, что он проверяет значение null (из Java 7):

System.out.print(Objects.equals(fooString1, "bar"));
1
задан SP1 10 March 2019 в 02:15
поделиться

1 ответ

class Program
{
    static void Main(string[] args)
    {
        string[] array =
        {
            "king",
            "queen",
            "throne"
        };

        var result = array.SelectMany(element => element.ToCharArray())
            .Where(RemoveLetterTSpec)
            .Where(RemoveLetterESpec);

        foreach (char letter in result)
        {
            Console.WriteLine(letter);
        }

        Console.ReadLine();
    }

    private static bool RemoveLetterESpec(char arg)
    {
        return arg != 'e';
    }

    private static bool RemoveLetterTSpec(char arg)
    {
        return arg != 't';
    }
}

это простой пример того, как фильтровать в SelectMany

0
ответ дан ranton187 10 March 2019 в 02:15
поделиться