我有Nhibernate查询,它给了我两个列(字符串和bool)。我想将结果转换为字典。我知道有变形金刚可用,但我不知道如何使这个工作
Session.QueryOver<Customer>()
.Where(x => x.Id == XXX)
.Select(x => x.Name, x => x.Moderator)
答案 0 :(得分:0)
我不认为有一个内置的变换器可以做到这一点(你可以编写自己的),但是在获得查询结果之后编写一些LINQ可能很简单很好。
这取决于你希望你的字典看起来像什么,但这里有一个可能有帮助的例子。假设您想要一个字典,其中密钥为true
或false
,代表版主和非版主,值为List<string>
,其中包含版主的名称。在这种情况下,你可以写:
IDictionary<bool, List<string>> moderatorDictionary = session.QueryOver<Customer>()
.Select(
x => x.Name,
x => x.Moderator
)
.List<object[]>()
.GroupBy(x => (bool)x[1], x => (string)x[0])
.ToDictionary(grp => grp.Key, grp => grp.ToList());
使用List<object[]>
通常不太适合可维护性,但对于这样的两个属性,它可能没问题。如果您正在使用更多属性,最好创建一个类并使用AliasToBean
将每一行转换为该类的实例。