Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7020347
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T23:18:25+00:00 2026-05-27T23:18:25+00:00

I have following query: Banner banner = Database.Banners.Where(b => b.IsPublish.Value && b.Category.Value == (int)

  • 0

I have following query:

Banner banner = Database.Banners.Where(b => b.IsPublish.Value && 
         b.Category.Value == (int) CategoryBanner.Banner &&
         b.PeriodShowCountAlready < b.PeriodShowCount ||
         b.ShowNext < DateTime.Now ).Take(1).FirstOrDefault();

I retrieve only one record. Suppose that in the DB 3 records satisfy this query and LINQ will return always same record. I want that returned random record, how can I do this?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T23:18:26+00:00Added an answer on May 27, 2026 at 11:18 pm

    Depending on your database, this might work:

    var banners = Database.Banners.Where(b => b.IsPublish.Value && 
             b.Category.Value == (int) CategoryBanner.Banner &&
             b.PeriodShowCountAlready < b.PeriodShowCount ||
             b.ShowNext < DateTime.Now );
    

    Then just skip a random number of banners…

    var skip = new Random().Next(banners.Count() - 1);
    var banner = banners.Skip(skip).FirstOrDefault();
    

    As Amar points out, this is approach is less than optimal since it causes two trips to the databank. From my own experience profiling, the round-trip to another server most often costs much-much more than executing a simple SQL statement.

    So, what options are there?

    • Fetch the entire set, and select a random banner locally. This is not optimal because the set might be very large. If you know the set to be small (less than 1000 records without binary fields [like the banner image], or less than 10k all in all should be negligible)

    • Ask the database how many object there are first, and then ask the database for the n:th object. This is bad because it causes two trips.

    • Make the database do everything, which entrails leaving the comfort of your ORM and writing a stored procedure manually. To that end you utilize newid() [on sql server] as order by parameter and everything is fast and good, but you have to do this on the server and not in your C# app.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have following query and data saved in a MySQL database with a timestamp
I need some help with query from multiple tables. My database: I have following
I have a table in my MySQL database that looks like the following banner
I have following query in my project, $values = array(test=>value) $this->_db->update(tablename,$values,array('id = ?'=> $data['id'],'wid
I have following query, var employees = from emp in this.DataWorkspace.v2oneboxData.me_employees where emp.me_is_deleted.Value ==
I have following query: $query=SELECT language_value, votes, user_id FROM labels WHERE approved=1 AND label_value=.
I have following query , select * from process where name like 'abc'; now
I have following query which take more than a minute to execute, how can
I have following SQL query SELECT TOP 10000 AVG(DailyNodeAvailability.Availability) AS AVERAGE_of_Availability FROM Nodes INNER
I have the following query to count all data every minute. $sql= SELECT COUNT(*)

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.