Chcę dodać niektóre wiersze do bazy danych przy użyciu Linq do SQL, ale chcę wykonać „niestandardowe sprawdzenie” przed dodaniem wierszy, aby wiedzieć, czy muszę dodać, zamienić lub zignorować przychodzące wiersze. Chciałbym utrzymać ruch między klientem a serwerem DB na jak najniższym poziomie i zminimalizować liczbę zapytań.
Aby to zrobić, chcę pobrać tak mało informacji, jak jest to wymagane do weryfikacji i tylko raz na początku procesu.
Myślałem o zrobieniu czegoś takiego, ale oczywiście to nie działa. Czy ktoś ma pomysł?
Dictionary<int, DateTime> existingItems =
(from ObjType ot in TableObj
select (new KeyValuePair<int, DateTime>(ot.Key, ot.TimeStamp))
)
Na koniec chciałbym mieć Słownik, bez konieczności pobierania całych obiektów ObjectType z TableObject.
Rozważyłem również następujący kod, ale próbowałem znaleźć właściwy sposób:
List<int> keys = (from ObjType ot in TableObj orderby ot.Key select ot.Key).ToList<int>();
List<DateTime> values = (from ObjType ot in TableObj orderby ot.Key select ot.Value).ToList<int>();
Dictionary<int, DateTime> existingItems = new Dictionary<int, DateTime>(keys.Count);
for (int i = 0; i < keys.Count; i++)
{
existingItems.Add(keys[i], values[i]);
}
źródło
var servers = list.Select( s => new { s.ProjectName, Url = "tcp://" + s.BuildMachineName + ":" + s.PortNumber + "/CruiseManager.rem" } ).ToDictionary( s => s.ProjectName, s.Url );
utworzy to słownik oparty na nazwie projektu pary nazwa / adres projektu..Select( t => new { t.Key, t.TimeStamp } )
wyrażenie jest konieczne?.Select
powoduje, że wygenerowany SQL wybiera tylko Key i TimeStamp, a nie wybiera każdą kolumnę.Select
jeśli robisz Linq do Object (zamiast Linq do SQL)Patrząc na twój przykład, myślę, że tego właśnie chcesz:
źródło
Spróbuj wykonać następujące czynności
Lub pełna wersja wnioskowania typu
źródło
Użyj przestrzeni nazw
Wykonaj instancję
DataContext
klasyPosługiwać się
Aby pobrać wartości, użyj przestrzeni nazw
źródło