Хватит с головой обоих вариантов. Берите который больше нравится.
Но если игра предполагается в 3D - лучше конечно же с дискретной видеокартой, то есть второй вариант.
LINQ был придуман раньше, это правда.
Сначала был придумана и реализована технология LINQ to SQL. Затем уже был реализован ADO.NET EntityFramework и он работал без LINQ. Microsoft посчитала что эти две технологии являются конкурирующими и объединила их, дальше стал развиваться и продвигаться EntityFramework.
Зачем вытягивать все данные в память?
Получите сначала список уникальных ключей записей (либо набор полей по которым записи определяются уникальными) и потом вытягивайте запись по-одной и обрабатывайте.
Это синхронизацию данных вы пытаетесь выполнить?
То есть нужно просто перелить данные по коду ID?
Если так то нужно просто запоминать на каком ID закончилась прошлая загрузка и продолжать с него далее.
using System;
using System.Linq;
public class Program
{
public static void Main()
{
string[] __sa = {"a", "abc", "ab"};
Console.WriteLine(String.Join(" ", __sa.OrderBy(x => x.Length).ToArray()));
}
}
У Enum есть атрибут Description, который можно считать. Можно реализовать / навесить другие атрибуты.
Только вот зачем хранить такое количество нужных данных в константах.
Пользователь их будет выбирать где? Если в интерфейсе UI возможно стоит перейти на БД либо XML хранение? Тогда все будет строго каталогизировано и структурировано. А так "каша" какая-то получается в коде.
1. Придумываете расширение например .bmsql (можно использовать любое)
2. Регистрируете его в реестре расширений ОС WIndows и назначаете на запуск ваше приложение, например при его инсталляции (публикации).
3. Обрабатываете параметр (имя файла) в вашем приложении, запускаете процедуру восстановления.