Не знаю, ищет ли кто-нибудь это. У меня такая же проблема. Выбор в запросе, а затем выполнение того, где (или объединение) и использование переменной выбора разрешили проблему для меня. (проблема была в коллекции «Reintegraties» для меня)
query.Select(zv => new
{
zv,
rId = zv.this.Reintegraties.FirstOrDefault().Id
})
.Where(x => !db.Taken.Any(t => t.HoortBijEntiteitId == x.rId
&& t.HoortBijEntiteitType == EntiteitType.Reintegratie
&& t.Type == TaakType))
.Select(x => x.zv);
надеюсь, что это кому-то поможет.
В конечном счете Вы оказываетесь перед необходимостью разочаровываться в идее "корректных" для этой проблемы. Перевод строки, неважно, как Вы делаете это, уничтожает точность от имени совместимости и удобочитаемости. Все три опции одинаково совместимы, но № 1 и № 2 страдают с точки зрения удобочитаемости. Поэтому просто выполненный с ним и идут для любых взглядов лучший — опция № 3.
Да, переводы являются неправильными при немецком языке, но если Вы не начинаете требовать, чтобы Ваши пользователи указали, в каком языке их заголовки находятся (и ограничение их только к одному), Вы не собираетесь решать ту проблему без намного большего усилия, чем это стоит. (Например, выполняя каждое слово в заголовке через словари для каждого известного языка и переводя, что диакритические знаки слова согласно правилам его языка были бы работа , но это чрезмерно.)
, С другой стороны, если немецкий язык является более высоким беспокойством, чем другие языки, сделайте свой перевод всегда , используют немецкую версию, когда каждый существует: ä
в † ’ae
, ë
в †’ e
, ï
в † ’i
, ö
в †’ oe
, ü
в † ’ue
.
Редактирование:
, О, и что касается фактического метода, я перевел бы особые случаи, если таковые имеются, через [1 111], затем использовать iconv
для остальных:
$text = str_replace(array("ä", "ö", "ü", "ß"), array("ae", "oe", "ue", "ss"), $text);
$text = iconv('UTF-8', 'US-ASCII//TRANSLIT', $text);
Мне третье является самым читаемым.
Вы могли использовать немного словаря, например, ï -> i
и ü -> ue
, чтобы указать, как Вы хотели бы, чтобы различный charcaters был переведен.
Как интересное примечание стороны, на том, ТАКИМ ОБРАЗОМ, ничто, кажется, действительно не имеет значения после идентификатора - это - ссылка на эту страницу:
, Как обработать диакритические знаки (диакритические знаки) при перезаписи ' симпатичный URLs'
, Очевидно, мотивация должна позволить изменения заголовка, не разрывая связи, и можно хотеть рассмотреть ту функцию также.
Теперь люди могут записать заголовки, содержащие любой символ UTF-8, но большинство не позволяется в URL.
Наоборот, большинство позволяется. Посмотрите, например, URL Википедии - вещи как http://en.wikipedia.org/wiki/CafГ© (иначе http://en.wikipedia.org/wiki/Caf%C3%A9 ) дисплей приятно - даже если маркер StackOverflow не выбирает их правильно :-)
, прием читает их надежно через любую среду хостинга; существуют проблемы с CGI и серверами Windows, особенно IIS, например.
Приятная тема, у меня была такая же проблема некоторое время назад.
Вот как я исправил его:
function title2url($string=null){
// return if empty
if(empty($string)) return false;
// replace spaces by "-"
// convert accents to html entities
$string=htmlentities(utf8_decode(str_replace(' ', '-', $string)));
// remove the accent from the letter
$string=preg_replace(array('@&([a-zA-Z]){1,2}(acute|grave|circ|tilde|uml|ring|elig|zlig|slash|cedil|strok|lig){1};@', '@&[euro]{1};@'), array('${1}', 'E'), $string);
// now, everything but alphanumeric and -_ can be removed
// aso remove double dashes
$string=preg_replace(array('@[^a-zA-Z0-9\-_]@', '@[\-]{2,}@'), array('', '-'), html_entity_decode($string));
}
Вот как работает моя функция: