问一个linq语句的写法

ayun00 2012-03-06 10:44:08

1. 对象List<model> lsit
list.a int
list.b float
list.c float

2.数组对象 float[] arr

如何查找符合 数组arr的index 和 list.a 相等 ,并且 arr[index] 的值 大于等于 list.b ,小于 list.c 条件的 model

Ps: list 的cout 比 arr的 length 小很多
...全文
125 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ayun00 2012-03-08
  • 打赏
  • 举报
回复
thank you
ayun00 2012-03-06
  • 打赏
  • 举报
回复
@gomoku
@lihanbing
你们的方法都可以

不过 我的对@gomoku大大的
var query=from a in arr.Select((a,b)=>new{index=b,value=a})
join l in list
on a.index equals l.a
where a.value>=l.b && a.value<l.c
select l;
写法很感兴趣 能解释下吗?
lihanbing 2012-03-06
  • 打赏
  • 举报
回复

var s = from m in list
where (arr[m.a] >= m.b) && (arr[m.a] <= m.c)
select m;
gomoku 2012-03-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 q107770540 的回复:]
[/Quote]
把你绕进去了:)


var selected = list.Where(l => l.a < arr.Length && arr[l.a] >= l.b && arr[l.a] < l.c);
ayun00 2012-03-06
  • 打赏
  • 举报
回复
这语句没有看懂 汗
q107770540 2012-03-06
  • 打赏
  • 举报
回复
有任何LINQ相关的问题,欢迎直接到LINQ版块提问:https://forum.csdn.net/SList/LINQ/
q107770540 2012-03-06
  • 打赏
  • 举报
回复

void Main()
{
var list=new List<model>
{
new model{ a=1, b=1.1F,c=1.8F},
new model{ a=2, b=2.2F,c=1.4F},
new model{ a=3, b=3.1F,c=1.6F},
new model{ a=5, b=4.1F,c=1.5F},
new model{ a=7, b=5.1F,c=1.3F},
new model{ a=9, b=7.1F,c=1.7F},
new model{ a=4, b=8.1F,c=1.9F},
new model{ a=11, b=11.1F,c=1.66F},
new model{ a=6, b=12.1F,c=1.22F}
};
float[] arr=new float[]{1F,1.2F,1.3F,1.4F,1.5F,1.6F,1.7F,2.2F,3.3F,4.4F,5.5F,6.6F,7.7F};
var query=from a in arr.Select((a,b)=>new{index=b,value=a})
join l in list
on a.index equals l.a
where a.value>=l.b && a.value<l.c
select l;
Console.WriteLine("a\tb\tc");
query.ToList().ForEach(q=>Console.WriteLine("{0}\t{1}\t{2}",q.a,q.b,q.c));
/*
a b c
1 1.1 1.8
*/
}
public class model
{
public int a{get;set;}
public float b{get;set;}
public float c{get;set;}
}
q107770540 2012-03-06
  • 打赏
  • 举报
回复
好绕口的描述
不如举个实例,结合例子来描述更清楚点
你说呢?
q107770540 2012-03-06
  • 打赏
  • 举报
回复


Select - Indexed

This sample uses an indexed Select clause to determine if the value of ints in an array match their position in the array.

(back to top)

复制代码

C#


public void Linq12()
{
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var numsInPlace = numbers.Select((num, index) => new { Num = num, InPlace = (num == index) });

Console.WriteLine("Number: In-place?");
foreach (var n in numsInPlace)
{
Console.WriteLine("{0}: {1}", n.Num, n.InPlace);
}
}
Result


Number: In-place?
5: False
4: False
1: False
3: True
9: False
8: False
6: True
7: True
2: False
0: False



http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧