我必须写一个查询,其中每个供应商我都必须从中读取供应商的联系电话,VendorContact但要成行,每个唯一供应商要一行,每个电话号码要一列,以逗号分隔字符串作为主要结果。这可以在普通 SQL中 轻松完成,但我必须在中完成QueryOver。我无法在QueryOver SQL中 声明变量。
VendorContact
QueryOver
var vendorvar = Session.QueryOver<Vendor>(() => V) .Left.JoinQueryOver(() => v.ContactNumbers, () => VendorContact) .SelectList(list => lst .Select(() => v.Name) .Select(() => VendorContact.PhoneNumber)) .TransformUsing(Transformers.AliasToBean<VendorModel>()) .List<VendorModel>();
一个供应商可能会有更多电话号码,所以我需要
Vendor Contacts ------ ----------------------------------------- V0001 905-2343444,416-4545454,647-8484834 V0002 905-2356219,416-4111111,647-8000004
谢谢
总的来说,如果那真的很简单的话:
…这可以在普通 sql中 轻松完成,但是…
只需在原始查询中使用该SQL语句即可。有一些DTO可以取得结果
public class MyDto { public virtual string FirstAlias { get; set; } // set name and type you need public virtual string SecondAlias { get; set; } }
在这里,我们进行查询,转换和列出:
// raw SQL query var query = session .CreateSQLQuery("Select " + " SomColumn AS FirstAlias, " + " SomComputedColumn AS SecondAlias " + " FROM mySchema.MyTable" + " join, where, order by..... " ); // here we set transformer (check the aliases) query.SetResultTransformer(Transformers.AliasToBean<MyDto>()); // and there is nice C# result var list = query.List<MyDto>();