public static IList<T> ConvertTo<T>(DataTable table)
{
if (table == null)
{
return null;
}
List<DataRow> rows = new List<DataRow>();
foreach (DataRow row in table.Rows)
{
rows.Add(row);
}
return ConvertTo<T>(rows);
}
public static T ConvertItem<T>(DataTable table)
{
T obj = default(T);
if (table != null && table.Rows.Count > 0)
{
obj = CreateItem<T>(table.Rows[0]);
}
return obj;
}
public static T CreateItem<T>(DataRow row)
{
T obj = default(T);
if (row != null)
{
obj = Activator.CreateInstance<T>();
Type entityType = typeof(T);
PropertyInfo[] properties = entityType.GetProperties();
for (int i = 0; i < properties.Length; i++)
{
object[] customAttributes = properties[i].GetCustomAttributes(typeof(ColumnAttributes), false);
ColumnAttributes dataField = null;
if (null != customAttributes && customAttributes.Length > 0 && null != (dataField = customAttributes[0] as ColumnAttributes))
{
if (row.Table.Columns.Contains(dataField.FieldName) && !row[dataField.FieldName].GetType().FullName.Equals("System.DBNull"))
{
properties[i].SetValue(obj, row[dataField.FieldName], null);
}
}
}
}
return obj;
}
एकमात्र चीज जो हम अभी सोच सकते हैं वह यह है कि हमें कुछ ऐसा करना होगा जहां हमें कचरा खुद को इकट्ठा करने की ज़रूरत है?जेनेरिक सूची में डेटाटेबल कनवर्ट करें?
विचार?
क्यों हमें लगता है कि एक रिसाव ?:
हम मेमोरी त्रुटियाँ से बाहर हो रही है हो सकता है। यदि किसी पृष्ठ को इस प्रकार के रूपांतरण का उपयोग करने के लिए व्यावसायिक तर्क की आवश्यकता नहीं है, तो II6 प्रक्रिया बढ़ती नहीं है, लेकिन जब हम इसका उपयोग करने वाले किसी पृष्ठ को दबाते हैं, तो यह बढ़ता है।
हमें वर्तमान में अधिक जानकारी देने के लिए एएनटीएस प्रोफाइलर मिल रहा है।
आप एक रिसाव की क्या सबूत है तुम्हारे पास हो सकता है? –
वास्तव में समस्या कहां है? –
आर यू usin 'nHIbernate? – renegadeMind