将LongListSelector与已部署的数据库一起使用

时间:2013-07-28 21:59:56

标签: linq-to-sql windows-phone-8 relational-database longlistselector local-database

我正在尝试为Windows Phone 8创建一个应用程序,该应用程序在LongListSelector中显示数据,该数据库是从应用程序附带的SQL CE数据库填充的。我想我已经打开并从数据库函数中读取,但我无法正确使用LINQ to SQL对LLS的数据进行分组。

我有一个包含表和相应列的数据库类。我正在使用辅助类“KeyedList”为msdn sample code中的数据添加公共名称:

public class KeyedList<TKey, TItem> : List<TItem>
{
    public TKey Key { protected set; get; }

    public KeyedList(TKey key, IEnumerable<TItem> items)
        : base(items)
    {
        Key = key;
    }

    public KeyedList(IGrouping<TKey, TItem> grouping)
        : base(grouping)
    {
        Key = grouping.Key;
    }
} 

然后我有了数据库上下文:

dB = new DataContext(DataContext.DBConnectionString);

最后,这是我尝试使用的LINQ to SQL:

var items =
            from item in dB.TableName
            orderby dB.ID
            group item by dB.Generation into generation
            select new <KeyedList<string,Item>(generation);

var allItems = new List<KeyedList<string, Item>>(items)

我几乎从示例中获取了这些代码,但在创建用于绑定到LongListSelector的allItem时,我无法使分组和排序工作。我一直得到无效的参数错误。

我是VB编程的新手,非常感谢所有帮助!

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。创建新的键控列表时,请确保使用正确的键类型和项类型。键类型将是group by使用的数据类型,而item类型是DataContext。所以在我的例子中,db.Generation是一个字符串,DataContext类型是Item类型。