Use "System.Collections.IDictionary" as the resultClass for "SelectDescLCID"
-----邮件原件----- 发件人: Andrea Tassinari [mailto:[EMAIL PROTECTED] 发送时间: 2008年1月10日 19:08 收件人: [email protected] 主题: Selecting a key value pair Hello, The problem: I have a class like this: public class Item { private int _id; private HashTable _desc; public Item() { _id = 0; _desc = new HashTable(); } public int Id { get{return _id;} set{_id=value;} } //this represents a set of key,value of localized strings, for instance // "it-IT", "Buongiorno" // "en-US", "Good Morning" // "fr-FR", "Bonjour" // an so on public HashTable Desc { get{return _desc;} set{_desc = value; } } } //client code example Item item = _mapper.QueryForObject("SelectItem", itemid); string LCID = "en-US"; //actually this is parameterezid elsewhere. //this is what I would have string englishDescription = (string)item.Desc[LCID]; //even better: a KeyPairValue<string,string> for property Desc, which //would lead to //drop the explicit string cast string englishDescription = item.Desc[LCID]; Database Tables examples table ITEMS itemId partNumber streetPrice etc etc PK(intemID) table ITEMDESC itemId //foreign key to column itemId of table ITEMS LCID Description PK(itemId, LCID) Now, how could this be done with iBatis? It would be nice to have a mapping like this: <resultMap id="ItemResul" class="Item"> <result property="Id" column="Id" type="int" dbType="Int"/> <result property="Desc" column="Id" select="SelectDescLCID" lazyload="false"/> </resultMap> <select id="SelectItem" parameterClass="string" resultMap="ItemResul"> SELECT intemId AS Id, partNumber AS PartNumber FROM items WHERE itemId=#value# </select> <select id="SelectDescLCID" parameterClass="string" resultmap="?????"> SELECT LCID as Key, Descr as Value FROM ITEMDESC WHERE itemId=#value# </select> Is there a way to achive this? Thank you Cheers, Andrea

