Ранее я задавал этот вопрос: Петля в MySql, или альтернатива?
Я получил отличный ответ, и он работает. Теперь в моем приложении я использую 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. Но когда я добавляю еще один «AddIdentity» для tableB, он умирает, когда попадает в часть aList, потому что это неправильный тип объекта.
Теперь я предполагаю, что могу просто выполнить команду linq WHERE в этом списке, чтобы получить типы для каждого (но я не знаю, как), и после этого, как мне отличить два экземпляра tableB, которые я получу в строке?
Желательно, чтобы я закончил с 3 списками (tableA, tableB, tableB), где строки являются встроенными, поэтому aList [4] будет такой же строкой результата, что и bList1 [4] и bList2 [4].
Спасибо:)