snippetcsharpCritical
Convert Linq Query Result to Dictionary
Viewed 0 times
linqconvertresultdictionaryquery
Problem
I want to add some rows to a database using Linq to SQL, but I want to make a "custom check" before adding the rows to know if I must add, replace or ignore the incomming rows.
I'd like to keep the trafic between the client and the DB server as low as possible and minimize the number of queries.
To do this, I want to fetch as little information as required for the validation, and only once at the beginning of the process.
I was thinking of doing something like this, but obviously, it doesn't work. Anyone have an idea?
What I'd like to have at the end would be a Dictionary, without having to download the whole ObjectType objects from TableObject.
I also considered the following code, but I was trying to find a proper way:
I'd like to keep the trafic between the client and the DB server as low as possible and minimize the number of queries.
To do this, I want to fetch as little information as required for the validation, and only once at the beginning of the process.
I was thinking of doing something like this, but obviously, it doesn't work. Anyone have an idea?
Dictionary existingItems =
(from ObjType ot in TableObj
select (new KeyValuePair(ot.Key, ot.TimeStamp))
)What I'd like to have at the end would be a Dictionary, without having to download the whole ObjectType objects from TableObject.
I also considered the following code, but I was trying to find a proper way:
List keys = (from ObjType ot in TableObj orderby ot.Key select ot.Key).ToList();
List values = (from ObjType ot in TableObj orderby ot.Key select ot.Value).ToList();
Dictionary existingItems = new Dictionary(keys.Count);
for (int i = 0; i < keys.Count; i++)
{
existingItems.Add(keys[i], values[i]);
}Solution
Try using the
ToDictionary method like so:var dict = TableObj.Select( t => new { t.Key, t.TimeStamp } )
.ToDictionary( t => t.Key, t => t.TimeStamp );Code Snippets
var dict = TableObj.Select( t => new { t.Key, t.TimeStamp } )
.ToDictionary( t => t.Key, t => t.TimeStamp );Context
Stack Overflow Q#953919, score: 782
Revisions (0)
No revisions yet.