Есть коллекция
List<Plane> planesAll = PlaneCollection.GetPlane();
Выбранная позиция с события
selectedPlaneBR = planes[e.Position].BR;
Так вот данный BR в коллекции может быть от 1.0 до 10.0 и варианты могут быть 1.0, 1.3, 1.7, 2.0, 2.3, 2.7, 3.0 и т.д. до 10.0.
Надо сделать так, чтобы при выборе пользователя варианта, LINQ возвратил все объекты коллекции с разбросом +-1. То есть при выборе 2.3 надо вернуть коллекцию, в которой будут все элементы от 1.3 до 3.3. Данная коллекция передается в ListView. Мой метод:
var planevar =
from p in planesAll
where p.BR==selectedPlaneBR
select p;
planespotential = planevar.ToList<Plane>();
Как сделать чтобы выполнялись все условия и возвращался результат, который можно записать в .ToList<T>() ?
Думаю, что достаточно внести изменения в условие выборки и вы получите необходимый результат. К примеру так:
var planevar =
from p in planesAll
where (p.BR >= (selectedPlaneBR - 1)) && (p.BR <= (selectedPlaneBR + 1))
select p;
То есть выбрать элементы в интервале selectedPlaneBR +-1, на всякий случай условия заключил в скобки для ясности. Полезные ссылки для ознакомления:
Вторую ссылку дал, потому что считаю Method Syntax более удобным, чем Query Syntax. Посмотрите, почитайте, думаю не помешает. Для примера:
var planevar = planesAll
.Where(p => p.BR >= (selectedPlaneBR - 1) && p.BR <= (selectedPlaneBR + 1))
.ToList();
using System;
using System.Collections.Generic;
using System.Linq;
namespace Planes.Linq.Example
{
class Program
{
static void Main(string[] args)
{
var planesAll = new List<Plane>()
{
new Plane() { BR = 1.7 },
new Plane() { BR = 2.0 },
new Plane() { BR = 2.3 },
new Plane() { BR = 2.7 },
new Plane() { BR = 3.0 },
new Plane() { BR = 3.3 },
new Plane() { BR = 3.7 },
new Plane() { BR = 4.0 },
new Plane() { BR = 4.3 },
new Plane() { BR = 4.7 },
new Plane() { BR = 5.0 },
};
double selectedPlaneBR = 3.0;
double step = 1.0;
var selectedPlanes =
from p in planesAll
where p.BR <= selectedPlaneBR + step && p.BR >= selectedPlaneBR - step
select p;
foreach (var item in selectedPlanes)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
public class Plane
{
public double BR { get; set; }
public override string ToString()
{
return BR.ToString();
}
}
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей