从实体获取单列

Kev*_*cht 14 c# nhibernate

如何从查询而不是整个对象中获取单个列?

我可以做这样的事情来获得整个对象,但我想要的只是名字:

IList<Tribble> tribbles = session.CreateCriteria(typeof(Tribble)).List<Tribble>();
IList<string> names = new List<string>();
foreach (Tribble t in tribbles) {
    names.Add(t.Name);
}
Run Code Online (Sandbox Code Playgroud)

我希望能够指定其他条件,那么是否可以排除某些列被检索?

Kev*_*cht 25

这是我最终使用的解决方案:

ICriteria c = session.CreateCriteria(typeof(Tribble));
c.SetProjection(Projections.ProjectionList().Add(Projections.Property("Name")));
IList<string> names = c.List<string>();
Run Code Online (Sandbox Code Playgroud)

我从这个旧的StackOverflow问题中得到了这个想法.


Ulf*_*edt 7

大约五年后......,这是你可以用NHibernate.Linq做的事情:

IList<string> names = session.Query<Tribble>().Select(t => t.Name).ToList()
Run Code Online (Sandbox Code Playgroud)