我的数据库如下:
ID Date Number NumberIWishToRecord
我希望使用Linq-to-SQL查询来填充ObservableCollection<ObservableCollection<CustomClass>>
。
我想要的是只选择行Number == a given parameter
。
ID
指的是一个人,我想要做的是获取有关某个人的所有信息并将其存储在ObservableCollection
中,因此我将拥有ObservableCollection<CustomClass>
个CustomClass
仅保存一行信息,每个ObservableCollection<CustomClass>
仅保存一个人的信息(记录在不同日期)。
然后,我希望选择ObservableCollection
ObservableCollection<CustomClass>
,其中包含所有人的信息!
所以,一些样本数据:
ID Date Number NumberIWishToRecord
1 27-06-2012 0.1933 25
1 28-06-2012 0.1933 27
1 29-06-2012 0.1933 29
2 14-06-2012 0.1933 412
2 15-06-2012 0.1741 321
因此,当我运行我的方法时,我只想返回给定参数的Numbers,在我的情况下,我将选择0.1933。
然后我想要将ID = 1的两个行保存在ObservableCollection<CustomClass>
中,将ID == 2
保存在另一个ObservableCollection<CustomClass>
中的单行。然后,这两个ObservableCollections
都将保存在他们自己的ObservableCollection
中!举例说明:
ObservableCollection<ObservableCollection<CustomClass>>
ObservableCollection<CustomClass>
1 27-06-2012 0.1933 25
1 28-06-2012 0.1933 27
1 29-06-2012 0.1933 29
ObservableCollection<CustomClass>
2 14-06-2012 0.1933 412
我如何在linq中写一个查询来执行此操作?
答案 0 :(得分:0)
我只是编写一个标准的查询语法Linq表达式来实现这一点,你可以为你的表调整它。
var rowsById = new ObservableCollection<ObservableCollection<row>>(
from r in _rows
where r.number == 1.2
group r by r.ID into rowIdGroup
select new ObservableCollection<row>(rowIdGroup));
如果需要将行中的数据转换为CustomClass:
var rowsById = new ObservableCollection<ObservableCollection<CustomClass>>(
from r in _rows
where r.number == 1.2
group r by r.ID into rowIdGroup
select new ObservableCollection<CustomClass>(
rowIdGroup.Select(r => new CustomClass
{
ID = r.ID,
Number = r.number // add more
})));
或者如果您更喜欢所有表达式中的查询语法:
var rowsById = new ObservableCollection<ObservableCollection<CustomClass>>(
from r in _rows
where r.number == 1.2
group r by r.ID into rowIdGroup
select new ObservableCollection<CustomClass>(
from gr in rowIdGroup select new CustomClass
{
ID = gr.ID,
Number = gr.number
}));