Click here to Skip to main content
15,905,607 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi I have lambda query for get all of my record change in more then 7 days ago.
my query is:
C#
var result = db.adss.Include(i => i.AdsTpyeFK).Where(i => i.updateFlag == true && i.AdsTpyeFK.name == "gold" &&
(DateTime.Now - i.lastUpdate).TotalDays >= 7).ToList();


but with this I get runtime error and my app is crash.
is there any way to calculate and compare this in query itself?
please help.

What I have tried:

Currently I use this but I do not think this is the best or only way.

C#
var result = db.adss.Include(i => i.AdsTpyeFK).Where(i => i.updateFlag == true && i.AdsTpyeFK.name == "gold").ToList();
foreach (var item in result)
{
    if ((DateTime.Now - item.lastUpdate).TotalDays >= 7)
    {
        item.updateFlag = false;
    }
}

in this way first I get all record without the time, then calculate it in Foreach for require change.
Posted
Updated 12-Apr-24 20:27pm
v2
Comments
Pete O'Hanlon 13-Apr-24 2:55am    
What error do you get?
Maciej Los 14-Apr-24 6:42am    
Are you using EntityFramework?

Without your data and some idea what the error message is (and the actual data that generates it) we can't help you - and you have to remember that we can't see your screen, access your HDD, or read your mind - we only get exactly what you type to work with - we get no other context for your project.
Imagine this: you go for a drive in the country, but you have a problem with the car. You call the garage, say "it broke" and turn off your phone. How long will you be waiting before the garage arrives with the right bits and tools to fix the car given they don't know what make or model it is, who you are, what happened when it all went wrong, or even where you are?

That's what you've done here.

So, it's going to be up to you.

Start by looking at the error message carefully - it contains a lot of information which can help you. This should help you understand them: How to Write Code to Solve a Problem, A Beginner's Guide Part 2: Syntax Errors[^] - it';s primarily concerned with syntax errors, but the info and the process of understanding them is the same for runtime errors.

Then start looking for why the error is generated. Fortunately, you have a tool available to you which will help you find out what is going on: the debugger. If you don't know how to use it then a quick Google for "Visual Studio debugger" should give you the info you need.

Put a breakpoint on the first line in the function, and run your code through the debugger. Then look at your code, and at your data and work out what should happen manually. Then single step each line checking that what you expected to happen is exactly what did. When it isn't, that's when you have a problem, and you can back-track (or run it again and look more closely) to find out why.

Sorry, but we can't do that for you - time for you to learn a new (and very, very useful) skill: debugging!
 
Share this answer
 
In addition to Solution-1, it's advisable to explore further on your own. It's likely that the `lastUpdate` column might contain some null values, triggering exceptions during calculations. You can also try to modify query handle this scenario by moving the date calculation outside of the LINQ query.
C#
// Calculate the cutoff date
var cutoffDate = DateTime.Now.AddDays(-7);

var result = db.adss
    .Include(i => i.AdsTpyeFK)
    .Where(i => i.updateFlag && 
                i.AdsTpyeFK.name == "gold" &&
                i.lastUpdate <= cutoffDate)
    .ToList();
 
Share this answer
 
Comments
Member 11400059 17-Apr-24 3:09am    
thank you for your answer. I try it as soon as possible. also the error said my relationship and foreign key is incorrect or have loop. but I have not problem in other part of my project. also I search deeper in internet and some of the result said we can not compare time directly in query like I sent above. so it seems the only way is getting the result without time then compare in for each.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900