Как я могу динамически построить структуру предприятия?C#

Место общения программистов C#
Ответить
Anonymous
 Как я могу динамически построить структуру предприятия?

Сообщение Anonymous »

Я совершенно новичок в структуре сущности, и у меня есть вопрос о фильтрации данных. Эти объекты оба получены из объекта log . Вот какой -то код из моего приложения C#: < /p>

Код: Выделить всё

public class Log { ... }
public class DiskLog : Log { ... }
public class NetworkLog : Log { ... }

public enum LogType
{
NotInitialized = 0,
Disk,
Network
}

public List GetWithFilter(
Guid userKey,
int nSkip,
int nTake,
DateTime dateFrom = DateTime.MinValue,
DateTime dateTo = DateTime.MaxValue,
LogType logType = LogType.NotInitialized,
int computerId = 0)
{
// need to know how to optimize ...

return ...
}
< /code>

Конечно, у меня уже есть рабочее приложение и таблицы базы данных. Что я хочу сделать, так это сделать функцию getWithFilter работать. У меня есть несколько способов выполнения: < /p>


[*] if logType == LogType.Disk && computerId  0
(означает, что я должен использовать только параметр ComputerD, выберите только объекты диска)
[*]

Код: Выделить всё

if logType == LogType.NotInitialized && computerId  0
(выберите все типы журналов для указанного компьютера)
[*]

Код: Выделить всё

if logType == LogType.Network && computerId  0
(выберите все объекты NetworkLog для указанного компьютера) И я должен написать 6 запросов, например: < /p>

1.

context.LogSet
.OfType
.Where(x => x.Computer.User.UserKey == userKey)
.Where(x => x.DateStamp >= dateFrom && x.DateStamp < dateTo)
.OrderByDescending(x => x.Id)
.Skip(nSkip)
.Take(nTake)
.ToList();
< /code>

2.2.

context.LogSet
.OfType
.Where(x => x.Computer.User.UserKey == userKey)
.Where(x => x.DateStamp >= dateFrom && x.DateStamp < dateTo)
.Where(x => x.Computer.Id == computerId)
.OrderByDescending(x => x.Id)
.Skip(nSkip)
.Take(nTake)
.ToList();
< /code>

3.3.

context.LogSet
.Where(x => x.Computer.User.UserKey == userKey)
.Where(x => x.DateStamp >= dateFrom && x.DateStamp < dateTo)
.OrderByDescending(x => x.Id)
.Skip(nSkip)
.Take(nTake)
.ToList(); // simplest one!
< /code>

4.

context.LogSet
.Where(x => x.Computer.User.UserKey == userKey)
.Where(x => x.DateStamp >= dateFrom && x.DateStamp < dateTo)
.Where( x => x.Computer.Id == computerId)
.OrderByDescending(x => x.Id)
.Skip(nSkip)
.Take(nTake)
.ToList();
< /code>

5.

context.LogSet
.OfType
.Where(x => x.Computer.User.UserKey == userKey)
.Where(x => x.DateStamp >= dateFrom && x.DateStamp < dateTo)
.OrderByDescending(x => x.Id)
.Skip(nSkip)
.Take(nTake)
.ToList();
< /code>

6.

context.LogSet
.OfType
.Where(x => x.Computer.User.UserKey == userKey)
.Where(x => x.DateStamp >= dateFrom && x.DateStamp < dateTo)
.Where( x => x.Computer.Id == computerId)
.OrderByDescending(x => x.Id)
.Skip(nSkip)
.Take(nTake)
.ToList();
< /code>

Итак, вопрос в том, как я могу оптимизировать код? Где способ сделать это лучше.

Подробнее здесь: https://stackoverflow.com/questions/588 ... ynamically
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»