I hope this question respects the StackOverflow guidelines.
I have a table (ResultsTable) in my DB (SQL Server management studio) in which the columns are:
ID (PK, FK, int, not null)
RiskRate (PK, int, not null)
FileName (PK, nvarchar(100), not null)
In C# I've used EF. In my code, there is a method SelectFileNames(string fileName):
var resultSearch = (from result in DB.ContextManagement.ResultTable
where result.FinaName.compareTo(fileName) == 0
select result).FirstOrDefault();
if (resultSearch == null)
...
else
...
The FirstOrDefault() method has this description:
Returns the first element of the sequence that satisfies a condition
or a default value (TSource) if no such element is found.
So, how can I force FirstOrDefault() to return null if there isn't an element with that filename? NB: in my table ResultTable, the columns have the not null constraint.
Thanks.
CodePudding user response:
try like this .
List<Users> userlist = new ();
userlist.Add(new Users() {username = "testuser",password = "testpass"});
userlist.Add(new Users() { username = "testuser2", password = "" });
var result = userlist.FirstOrDefault(s => s.username == "testuser2")?.password;
CodePudding user response:
If in your query
(from result in DB.ContextManagement.ResultTable
where result.FinaName.compareTo(fileName) == 0
select result)
no entity respect your condition then the FirstOrDefault will return null.
It is specified in the documentation
"Remarks The default value for reference and nullable types is null."
Since the type of result is a reference type it will return null.
CodePudding user response:
You can use the following syntaxe
var resultSearch = DB.ContextManagement.ResultTable.Where(x => x.FileName == fileName).ToList() ;
if (resultSearch.Count > 0)
...
else //Get the first element of list

