Есть коллекция
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();
}
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Скажите пожалуйста можно ли разделить программу на модули
Здравствуйте, скажите пожалуйста, что я делаю не так?
ЗдравствуйтеЧерез вот такой метод, элементу TextView присваивается значение