關於
我不能使用LINQ現在,因爲它實際上是一個動態類型
Linq still works with dynamic types。
關於
如果在列表中第一個的foreach的唯一途徑,得到了不同的 IDS,然後在列表中再次的foreach不同,的foreach並添加 他們到一個列表<>?
沒有,假設我理解你與動態類型所遇到的問題,你可以使用LINQ執行下列操作之一:
如果需要輸出是一個列表的列表,以及在這個問題存儲過程是在SqlDataReader執行結果的方式,你可以做到以下幾點與Linq(代替我的示例值你自己的價值觀,包括類型從dataRecord鑄造):
IEnumerable<IEnumerable<YourType>> yourListOfLists;
using (var connection = new SqlConnection(someConnectionString))
using (var command = new SqlCommand(someStoreProcedureName, connection))
{
connection.Open();
command.CommandType = CommandType.StoredProcedure;
using (var reader = command.ExecuteReader())
{
yourListOfLists = reader.Cast<IDataRecord>()
.ToList()
.Select(dataRecord =>
new YourType()
{
VersionNumber = dataRecord.GetInt32(dataRecord.GetOrdinal("VersionNumber")),
Id = dataRecord.GetInt32(dataRecord.GetOrdinal("Id")),
FromType = dataRecord.GetString(dataRecord.GetOrdinal("FromType")),
FromStatusId = dataRecord.GetString(dataRecord.GetOrdinal("FromStatusId"))
})
.GroupBy(youObject => youObject.Id)
.Select(group => group.ToList())
.ToList();
}
}
如果你真的想要的東西是基於了一些標識的兩種不同的列表:
IEnumerable<YourType> listOfId1;
IEnumerable<YourType> listOfId2;
using (var connection = new SqlConnection(someConnectionString))
using (var command = new SqlCommand(someStoreProcedureName, connection))
{
connection.Open();
command.CommandType = CommandType.StoredProcedure;
using (var reader = command.ExecuteReader())
{
var combinedList = reader.Cast<IDataRecord>()
.ToList()
.Select(dataRecord =>
new YourType()
{
VersionNumber = dataRecord.GetInt32(dataRecord.GetOrdinal("VersionNumber")),
Id = dataRecord.GetInt32(dataRecord.GetOrdinal("Id")),
FromType = dataRecord.GetString(dataRecord.GetOrdinal("FromType")),
FromStatusId = dataRecord.GetString(dataRecord.GetOrdinal("FromStatusId"))
});
listOfId1 = combinedList.Where(item => item.Id == 111111).ToList();
listOfId2 = combinedList.Where(item => item.Id == 222222).ToList();
}
}
請注意,最有可能有更好的方法比在本例所示執行存儲過程。
是的。這是使用內置獨立方法的最簡單的方法,否則你必須構建自己的邏輯來遍歷整個列表,通過檢查元素是否已經存在於每個元素中,將每個元素添加到單獨的列表(這將是不同的列表)列表和每個ID的2個單獨列表。相反,我會建議你在這種情況下使用字典。 –
是的,我認爲可能是這樣。所以我首先瀏覽整個列表,並獲得所有不同的ID。 (所以我有一個帶有兩個ID的List,然後遍歷該列表,然後遍歷主列表,其中id =當前的id。似乎有點粗略,但它起作用 –
Craig
雖然這是直接的方法 –