Как вы думаете, что будет делать следующий код:
string original = "Hello World!";
string changed = original.Recplace("o", "xx");
original
не изменится, changed
будет равно "Hellxx, Wxxrld".
Так что выдолжен изменить вашу ReplaceZonToEmptyString:
public static int ExtractZoneNr(string zoneId)
{
string idWithoutZon = zoneId.Replace("Zon", string.Empty);
string sbInput = idWithoutZon.Replace(" ", string.Empty);
return Int32.Parse(sbInput);
}
Увы, это будет работать только на IEnumerable, а не на IQueryable
Лучшее решение:
Только это решениеработает, если IdGeographie
это три буквы "Zon", за которыми следует строковое представление IdZone
и ничего больше.Так что без пробелов, без начальных нулей и т. Д .: «Zon4», а не «Zon004» и «Zon 4»
У вас есть два IQueryables
один для воды и один для зон:
IQuerybale<Water> waters = ... // probably entities.Waters
IQueryable<Zone> zones = entities.Zones
Каждое Zone
содержит свойство int IdZone
и свойство .IdBatimentNavigation.IdEtablissementNavigation
, которое, по-видимому, имеет тип Etablissement
Более того, каждый Water
имеет строковое свойство GeographieId
вотформатируйте "ZonX", где X - целое число.
Теперь вы хотите запросить IdBatimentNavigation.IdEtablissementNavigation
всех Zones
с IdZone
, равным X-части одного или нескольких из Waters
Например: если у вас есть следующие Waters
[0] GeographieId = "Zon10"
[1] GeographieId = "Zon42"
[2] GeographieId = "Zon7"
И у вас есть Zones
с IdZone
: 4, 42, 30, 7, 22.
Тогда в результате вы захотите IdBatimentNavigation.IdEtablissementNavigation
из Zones
с IdZone
: 42 any 7 (в любом порядке)
Почему бы не объединить воды и зоны?
var result = zones.
.Select(zone => new
{
GeographieId = "Zon" + zone.IdZone.ToString(),
Etablissement = zoneIdBatimentNavigation.IdEtablissementNavigation,
})
.Join(waters, // join with waters
zone => zone.GeographieId, // from zone take the GeoGraphieId
water => water, // from waters take idGeographie
(zone, water) => zone.Etablissement); // when thay match return
Лучшим решением было бы попытаться удалить часть "Zon" из IdGeographie и проанализировать оставшиеся XXXX в int.Увы, нет функции, которая может выполнять разбор AsQueryable.