2014-08-11 7 views
0

У меня есть 2 коллекции элементов того же типа. Назовем эти элементы letterOfAlphabet. Каждая буква имеет идентификатор как int, а Name - как строку. SoКак скомбинировать две коллекции

ID Letter 
0 A 
1 B 
2 C 
3 D 

и так далее. Первая коллекция содержит алфавит, вторая содержит выбранные буквы. На первом этапе я создаю новый selectedLettersCollection, и это легко. Я просто добавляю элемент из коллекции алфавита в selectedLettersColletion и сразу же переименую его из исходной коллекции (алфавит). Итак, скажем, я создал коллекцию первых 5 букв алфавита и сохранил ее в таблице SQL. Теперь коллекция алфавитов начинается с F и содержит буквы через Z, selectedlettersCollection содержит буквы A, B, C, D и E.

Теперь предположим, что хочу удалить букву C form selectedLettersCollection и переместить ее обратно в алфавит и получить письмо G из алфавита и переместите его в selectedLettersColletion. Каков наиболее эффективный способ выполнить эту опцию в LINQ, общих коллекциях и/или T-SQL?

Я бы, конечно, создавал новую временную коллекцию выбранных элементов и загружал в нее выбранные элементы. Затем я выполнил бы свои операции удаления. Но пока единственное, что приходит мне на ум, чтобы смириться с этими коллекциями, - это выполнить итерацию через selectedLettersColletion и новую временную сборку и перемещение элементов соответственно, но мне было интересно, есть ли метод, который не требует итерации, похожей на TSQL-соединения, ищущие NULL.

+1

вау ... слишком много слов, почему просто показать свой SQL вместо слова? –

+1

Почему бы просто не выбрать одну коллекцию с выбранным булевым свойством? – Paparazzi

+0

@ Blam - ... потому что коллекция источников - многоразовая коллекция (в настоящее время) 490 элементов. Каждый из этих элементов потенциально может быть членом бесконечного числа функциональных групп. – ArtK

ответ

0

Я буду использовать A и B для имен таблиц. Чтобы переместить строку с ID = 1 из таблицы А для использования таблицы B следующее:

DELETE A 
OUTPUT deleted.Id, deleted.Letter INTO B 
WHERE Id = 1; 
Смежные вопросы