A basic solution would look like this:
bool sortTest(int[] numbers, int target)
{
Array.Sort(numbers);
for(int i = 0; i < numbers.Length; i++)
{
for(int j = numbers.Length-1; j > i; j--)
{
if(numbers[i] + numbers[j] == target)
return true;
}
}
return false;
}
Now I’m very new to LINQ but this is what I have written so far:
var result = from num in numbers
where numbers.Contains(target -num)
select num;
if (result.Count() > 0)
return true;
return false;
Now i’m running into an issue given the following example:
Array: 1, 2, 4, 5, 8
Target: 16
It should return back false, but it’s catching 16-8=8. So how do I go about not letting it notice itself in the contains check? Or can I make a second array each time within the query that doesn’t contain the number I’m working with(thus solving the problem)?
Thanks in advance.
Is this what you’re looking for?
[Edit]
This returns matches twice and ignores the situation where a number is duplicated in the array. You can’t handle these situations using Expression Syntax because you can’t access the index of a matched item, but you can do it like this:
As long as you don’t have any zeros in your array.
[Further thought Edit]
The perfect mix solution: