Как написать выражение для конкатенации строк для linq? - PullRequest
1 голос
/ 10 января 2012

Как написать выражение для конкатенации строк для linq? У меня есть это:

x => (x.Address1 + " " + x.Address2).Contains("add")
Предикат

, и я не знаю, как написать лямбда-выражение для конкатенации строк без использования метода string.Concat. Итак, у меня есть два выражения (x.Address1 и " "), и мне нужно их объединить.

Ответы [ 2 ]

2 голосов
/ 10 января 2012

Я не понимаю, почему вы не хотите использовать String.Concat. Это отлично работает:

var foo = wibble.Select(s => String.Concat("foo", s, "bar"));

Возвращаясь к вашему примеру, не лучше ли написать x => x.Address1.Contains("add") || x.Address2.Contains("add")

1 голос
/ 11 января 2012

ОБНОВЛЕНИЕ: Эта ссылка имеет решение: Объединение строк NHibernate / MySQL

Будет ли строка foo в .Contains(foo) когда-либо содержать пробел? Если нет, попробуйте второй предикат Аде, поскольку он позволяет избежать конкатенации.

Если это не сработает, возможно, вам придется извлечь из базы данных больше объектов, чем вам нужно, и отфильтровать их в коде. Если вам нужно сделать это, возможно, стоит использовать начальный предикат, такой как x => x.Address1.Contains(foo[0]) || x.Address2.Contains(foo[0]), чтобы ограничить количество возвращаемых объектов. Я оставляю вам возможность придумать лучший начальный предикат, чем этот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...