Chanikya494 Ответов: 1

Как я могу получить огромные данные из web.api?


Привет, я новичок в этом деле. web.api У меня есть два случая, и оба случая приведут к одному и тому же результату .

дело: 1 Получение результата в одном LINQ.
корпус: 2 Сначала получите все данные из каждой таблицы и выполните LINQ.

Какой самый лучший способ быстро получить очень большие данные? У меня есть такие данные, как посты, комментарии и ответы, как в facebook.

И как я слышал, для огромных данных нам нужна разбивка на страницы. Если ДА пожалуйста, направьте меня относительно этого.

Что я уже пробовал:

Дело: 1
var query = (from p in db.TblPost where (from q in db.TblThread where q.LocationLocationid == locationID && q.CategoriesCategoryid == categoryID select q.Threadid).Contains(p.ThreadThreadid) join r in db.TblThread on p.ThreadThreadid equals r.Threadid join s in db.TblUser on p.UserUserid equals s.Userid join t in db.TblCategories on r.CategoriesCategoryid equals t.Categoryid join u in db.TblLocation on r.LocationLocationid equals u.Locationid orderby r.CreatedTime descending select new { p, r.Subject, r.EventAddress, r.EventClosetime, r.EventDate, r.EventDuration, r.EventStarttime, r.EventTitle, r.IseventAllday, r.TargetUsers, r.CreatedTime, s.FirstName, s.MiddleName, s.LastName, t.Name, u.Locationname, r.Isreadonly }).ToList();


корпус: 2

List<TblPost> _tblPost = new List<TblPost>();
                    _tblPost = (from p in db.TblPost select p).ToList();

                    List<TblThread> _tblThread = new List<TblThread>();
                    _tblThread = (from p in db.TblThread select p).ToList();

                    List<TblUser> _tblUser = new List<TblUser>();
                    _tblUser = (from p in db.TblUser select p).ToList();

                    List<TblLocation> _tblLocation = new List<TblLocation>();
                    _tblLocation = (from p in db.TblLocation select p).ToList();

                    List<TblCategories> _tblCategory = new List<TblCategories>();
                    _tblCategory = (from p in db.TblCategories select p).ToList();


     var query = (from p in _tblPost where (from q in _tblThread where q.LocationLocationid == locationID && q.CategoriesCategoryid == categoryID select q.Threadid).Contains(p.ThreadThreadid) join r in _tblThread on p.ThreadThreadid equals r.Threadid join s in _tblUser on p.UserUserid equals s.Userid join t in _tblCategory on r.CategoriesCategoryid equals t.Categoryid join u in _tblLocation on r.LocationLocationid equals u.Locationid orderby r.CreatedTime descending select new { p, r.Subject, r.EventAddress, r.EventClosetime, r.EventDate, r.EventDuration, r.EventStarttime, r.EventTitle, r.IseventAllday, r.TargetUsers, r.CreatedTime, s.FirstName, s.MiddleName, s.LastName, t.Name, u.Locationname, r.Isreadonly }).ToList();

Patrice T

Определение понятия "очень большие данные"

Chanikya494

Я получу данные после выполнения запроса

Patrice T

Определите "очень огромный"

1 Ответов

Рейтинг:
2

Er. Puneet Goel

Согласно вашим запросам, подход 1 лучше по производительности, так как он не создает много объектов, но запрос 2 более удобочитаем. Поэтому я скажу запрос 2.

Что касается пагинации (хороший подход для огромных данных), пожалуйста, проверьте реализацию ниже:

Веб-Api С Разбиением На Страницы


Chanikya494

Что значит читабельный смысл @Er. Пунит Гоэль
И спасибо за ссылку. Но в этом случае он делает разбиение на страницы после получения данных. В моем случае мне нужно получить несколько записей, как того требует разбиение на страницы.

Er. Puneet Goel

При написании кода мы всегда стремимся к производительности. Достигая этого, мы иногда заканчиваем тем, что пишем слишком грязный код. Таким образом, код должен быть сбалансирован между производительностью и удобочитаемостью (легко понять)

Chanikya494

Итак, вы предлагаете мне заняться делом 2. Если я не ошибаюсь.

Er. Puneet Goel

Определенно