PointF p1 = new PointF(300, 6.5f);
PointF p2 = new PointF(400, 5.5f);
PointF p3 = new PointF(500, 3.7f);
PointF p4 = new PointF(600, 2.8f);
List<PointF> list = new List<PointF>();
list.Add(p1);
list.Add(p2);
list.Add(p3);
list.Add(p4);
private List<PointF> GetList(float x)
{
}
给出x=300-600之间的任意数字,要获取x在哪两组PointF之间。
例如x=450,返回PointF(400, 5.5f) 和PointF(500, 3.7f)放在List里。
x=300就返回PointF(300, 6.5f)和PointF(400, 5.5f)放在List里。
x=600就返回PointF(500, 3.7f)和 PointF(600, 2.8f)放在List里。
11 个解决方案
#1
linq : linq to obj
#2
不太会linq, 求具体实现代码
#3
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
#4
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
#5
谢谢大神回复,如果x=600的话,会返回两条一样的PointF(600, 2.8f), 我想要的是600跟他相邻的那个字段
#6
谢谢大神回复,如果x=600的话,会返回两条一样的PointF(600, 2.8f), 我想要的是600跟他相邻的那个字段
#7
谢谢大神回复,如果x=600的话,会返回两条一样的PointF(600, 2.8f), 我想要的是600跟他相邻的那个字段
#8
确定你的PointF的X不能重复的话,使用listPoint.Distinct();操作。
#9
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
谢谢大神回复,如果x=600的话,会返回两条一样的PointF(600, 2.8f), 我想要的是600跟他相邻的那个字段
确定你的PointF的X不能重复的话,使用listPoint.Distinct();操作。
#10
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
谢谢大神回复,如果x=600的话,会返回两条一样的PointF(600, 2.8f), 我想要的是600跟他相邻的那个字段
确定你的PointF的X不能重复的话,使用listPoint.Distinct();操作。
#11
var test = list.OrderBy(a => a.X);
if(!string.IsNullOrEmpty(textBox1.Text))
{
var t = (from p in test where p.X >float.Parse(textBox1.Text) select p).FirstOrDefault();
MessageBox.Show("上一条和等于这一条:" + t);
var t1 = (from p in test where p.X <= float.Parse(textBox1.Text) select p).OrderByDescending(x => x.X).FirstOrDefault();
MessageBox.Show("下一条:" + t1);
}
大体这样做
#1
linq : linq to obj
#2
不太会linq, 求具体实现代码
#3
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
#4
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
#5
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
谢谢大神回复,如果x=600的话,会返回两条一样的PointF(600, 2.8f), 我想要的是600跟他相邻的那个字段
#6
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
谢谢大神回复,如果x=600的话,会返回两条一样的PointF(600, 2.8f), 我想要的是600跟他相邻的那个字段
#7
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
谢谢大神回复,如果x=600的话,会返回两条一样的PointF(600, 2.8f), 我想要的是600跟他相邻的那个字段
#8
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
谢谢大神回复,如果x=600的话,会返回两条一样的PointF(600, 2.8f), 我想要的是600跟他相邻的那个字段
确定你的PointF的X不能重复的话,使用listPoint.Distinct();操作。
#9
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
谢谢大神回复,如果x=600的话,会返回两条一样的PointF(600, 2.8f), 我想要的是600跟他相邻的那个字段
确定你的PointF的X不能重复的话,使用listPoint.Distinct();操作。
#10
List<PointF> newList=new List<PointF>();
newList.add(list.last(i=>i.存300的那个字段<=x));
newList.add(list.first(i=>i.存300的那个字段>=x));
using system.linq;
谢谢大神回复,如果x=600的话,会返回两条一样的PointF(600, 2.8f), 我想要的是600跟他相邻的那个字段
确定你的PointF的X不能重复的话,使用listPoint.Distinct();操作。
#11
var test = list.OrderBy(a => a.X);
if(!string.IsNullOrEmpty(textBox1.Text))
{
var t = (from p in test where p.X >float.Parse(textBox1.Text) select p).FirstOrDefault();
MessageBox.Show("上一条和等于这一条:" + t);
var t1 = (from p in test where p.X <= float.Parse(textBox1.Text) select p).OrderByDescending(x => x.X).FirstOrDefault();
MessageBox.Show("下一条:" + t1);
}
大体这样做