I'm converting nullable array to unnullable. This is my current code with two function calls:
myarray.Where(e => e.HasValue).Select(e => e.Value)
It looks like a very basic operation. Is it possible to do that in one call?
C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...
In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.
Compared to other languages—like Java, PHP, or C#—C is a relatively simple language to learn for anyone just starting to learn computer programming because of its limited number of keywords.
C is an imperative procedural language supporting structured programming, lexical variable scope, and recursion, with a static type system. It was designed to be compiled to provide low-level access to memory and language constructs that map efficiently to machine instructions, all with minimal runtime support.
myarray.OfType<int>();
This works because nullable types box to their underlying types if they are not null, but don't if they are null.
EDIT: The only thing I'll point out is that the semantics of the one-liner I made are slightly different than yours. It could be that you'd want yours instead of mine. Your code: "grab all nullable objects which have a value". My code: "grab all types which can successfully be cast to int"
You can always make your own extensions but that only makes your code seem more succinct, think that your implementation is the most succinct and clear you can get to be honest
public static IEnumerable<T> GetNonNullValues<T>(this IEnumerable<Nullable<T>> items) where T: struct
{
return items.Where(a=>a.HasValue).Select(a=>a.Value);
}
try using .OfType(...)
Example...
myarray.OfType<int>()
... this worked for me ...
var d = new int?[] { 1, 2, 3, 4, 5, null, null, 6, 7, 8, 9, null };
Console.WriteLine(d.Count()); // 12
Console.WriteLine(d.OfType<int>().Count()); //9
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With