У меня есть СПИСОК с двумя АТРИБУТЫ/ОБЪЕКТЫ. Первый IS INT-ARRAY для двух идентификаторов.Array-List не содержит
Я хочу, чтобы добавить новый объект в список, только если значение и (только в комбинации) не будет существовать в ИДС-массив СПИСКА отверстия. // если будет найден только один ID, все будет в порядке - только комбинация обоих идентификаторов должна перейти в ELSE-Case. :)
* 12 и 21 будет вары позже, поэтому не статические значения
Я не знаю, почему, но это не работает ...
если (Id! = Destination. Id & & ! (ThisDistances.Exists (х => x.Ids.Contains (12)) & & ThisDistances.Exists (х => x.Ids.Contains (21)))) {...}
public class DistanceData
{
public int[] Ids;
public int Distance;
}
protected void MakeDistances(int Id, double GeoLat, double GeoLon, int Limit = 100)
{
int i = 0;
List<DistanceData> ThisDistances = new List<DistanceData>();
foreach (var Destination in Destinations)
{
if (Id != Destination.Id && !(ThisDistances.Exists(x => x.Ids.Contains(12)) && ThisDistances.Exists(x => x.Ids.Contains(21))))
{
ThisDistances.Add(new DistanceData()
{
Ids = new int[2] { Id, Destination.Id },
Distance = (int)Math.Round(6378388 * Math.Acos(Math.Sin(GeoLat) * Math.Sin(Destination.GeoLat) + Math.Cos(GeoLat) * Math.Cos(Destination.GeoLat) * Math.Cos(Destination.GeoLon - GeoLon)), 0, MidpointRounding.AwayFromZero)
});
if (++i > 10) break;
}
}
ThisDistances = ThisDistances.OrderBy(x => x.Distance).Take(Limit).ToList();
foreach (var ThisDistance in ThisDistances)
{
Response.Write("<i><b>" + ThisDistance.Distance + "</b> (" + ThisDistance.Ids[0] + "," + ThisDistance.Ids[1] + ")</i><br />");
}
}
Как я могу проверить, что Идентификаторы НЕ находятся в ID-массиве ObjectList?
Research Булева алгебра: '(существует (а) && существует (б))' 'это существует (а) ||! ! Существует (б) '. Вы хотите '! Exists (a) &&! Exists (b)', который является '! (Существует (a) || существует (b))'. –
Вы также можете использовать 'false' вместо восклицательного знака, который некоторые люди находят более выразительным. – Greg
@RogerLipscombe в 2 словах: De-morgan. –