之前我问过这个问题:Loop in MySql, or alternative? 我得到了一个很好的答案,它确实有效。现在在我的应用程序中,我使用NHibernate(在C#.NET 3.5中)作为DAL。我真的不知道如何处理多种返回类型,所以我尝试了以下内容:
var session = NHibernateHelper.GetCurrentSession();
IQuery query = session.CreateSQLQuery(@"SELECT * FROM tableA AS A
LEFT JOIN tableB AS ctrl1 ON (A.controlID = ctrl1.controlID AND ctrl1.controlOptionType = ? AND ctrl1.controlOptionValue = ?)
LEFT JOIN tableB AS ctrl2 ON (A.controlID = ctrl2.controlID AND ctrl2.controlOptionType = ? AND ctrl2.controlOptionValue = ?)")
.AddEntity(typeof(nodecontrol));
IList<tableA> aList = query.List<tableA>();
IList<tableB> bList = query.List<tableb>();
这适用于aList。但是当我为tableB添加另一个“AddIdentity”时,它会在到达aList部分时死掉,因为它的对象类型错误。 现在我假设我可以在该列表上执行linq WHERE以获取每个类型(但我不知道如何),之后,如何区分每行我将获得的两个tableB实例?
最好我想得到3个列表(tableA,tableB,tableB),其中行是内联的,因此aList [4]将是与bList1 [4]和bList2 [4]相同的结果行。
谢谢:)