我正在使用Linq to Sql。當我的StoredProcedure執行其結果ll以的形式返回IMultipleResults。轉換/ Casting ISingleResult - 列出值到DataTable沒有循環
我將它轉換爲ISingleResults它可以是鑄造爲列表。
所以我需要將其轉換爲數據表,這樣我可以將其綁定到數據集和值傳遞給UI。
但我想這樣的方法,我可以轉換它沒有LOOP。
請任何機構幫助我。
對於任何澄清與我聯繫。
感謝你。
我正在使用Linq to Sql。當我的StoredProcedure執行其結果ll以的形式返回IMultipleResults。轉換/ Casting ISingleResult - 列出值到DataTable沒有循環
我將它轉換爲ISingleResults它可以是鑄造爲列表。
所以我需要將其轉換爲數據表,這樣我可以將其綁定到數據集和值傳遞給UI。
但我想這樣的方法,我可以轉換它沒有LOOP。
請任何機構幫助我。
對於任何澄清與我聯繫。
感謝你。
首先,你可能想看看,如果你能投你的名單到的BindingList,或做這樣的事情:
BindingListX = New BindingList(Of elementX)(QueryResult.ToList())
您也許能夠用結合。如果這不起作用,雖然這裏有另一個問題:你是否想在你的代碼中不使用循環,或者只是沒有看到代碼中的循環?它可以創建一個擴展函數執行轉換:
public static class HelperFunctions
{
public static void Map<T>(this IEnumerable<T> source, Action<T> func)
{
foreach (T i in source)
func(i);
}
public static DataTable ToDataTable<T>(this IEnumerable<T> source)
{
var dt = new DataTable();
var properties = typeof(T).GetProperties();
dt.Columns.AddRange(properties.Select(x => new DataColumn(x.Name, x.PropertyType)).ToArray());
source.Select(x => dt.NewRow().ItemArray = properties.Select(y => y.GetValue(x, null)).ToArray()).Map(x => dt.Rows.Add(x));
return dt;
}
}
但正如你所看到的,其他的擴展功能「地圖」無非是可以在線使用的foreach更多。如果那不是你想要的,那麼我表示歉意,並且會試着想出一個不同的方式。
還值得注意的是,我不確定是否分配給項目數組是填充行的最佳方法,所以如果它不起作用,請讓我知道,以便我可以起草另一個版本的函數。
希望這會有所幫助!
先生,我沒有得到代碼,你可以讓它變得簡單,我不想在代碼中使用任何循環,所以試着去做。 – 2010-10-11 04:36:03
因此,將它作爲'BindingList'投射不起作用? – diceguyd30 2010-10-11 12:14:04
只是想知道爲什麼你的數據層使用存儲過程,你的業務邏輯使用LINQ和你的UI使用數據集。也許你可以考慮在UI中使用你的linq對象?您可以像數據集一樣輕鬆地將List綁定到數據網格。對我來說,這看起來像是很多轉換。 – Peter 2010-10-07 09:24:02
我正在使用storedprocedure檢索數據,我需要數據集將其綁定到我的數據源。所以,如果你知道的東西,然後幫助我併發布你的解決方案 – 2010-10-07 17:54:49