0

我的数据库如下:

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

所以当我运行我的方法时,我只想返回给定参数的数字,在我的例子中我会选择 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 to sql 中编写一个可以执行此操作的查询?

4

1 回答 1

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
                                        }));
于 2012-06-27T10:18:17.467 回答