Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

C# Querying With LINQ Now You're Querying Selecting, Projecting and Anonymous Types

Joshua Graham
Joshua Graham
8,268 Points

Problem creating anonymous variable with Linq query...or problems trying to satisfy question.

I got a message saying "pelican" should be in the Results...well when I do this on Microsoft visual studio I saw pelican in the results. So, what is the problem with this?

And I've already tried it with just the "from BirdName in birds where BirdName.Color == mysteryBird.Color select BirdName.Name," and not the Birb color afterwards, but then I got a message saying there should be two elements.

CodeChallenge.cs
var birds = new[] 
{ 
    new { Name = "Pelican", Color = "White" }, 
    new { Name = "Swan", Color = "White" }, 
    new { Name = "Crow", Color = "Black" } 
};

var mysteryBird = new {Color = "White",Sightings = 3};

var matchingBirds = new[]
{
     from BirdName in birds where BirdName.Color == mysteryBird.Color select BirdName.Name,
     from BirdName in birds where BirdName.Color == mysteryBird.Color select BirdName.Color
};

I think you should write just Name instead of BirdName.

Joshua Graham
Joshua Graham
8,268 Points

The exact wording of the challenge "Challenge Task 2 of 2

Create a variable named matchingBirds and assign it a LINQ query on the birds variable that have the same Color property as the mysteryBird object. In the query, return an anonymous type with a property named BirdName and assign to it the Name property of the birds."

I changed it to "Name" then got this message

" Bummer! Does the anonymous type in your variable "matchingBirds" contain a property named "BirdName"?"

There wasn't a compiler error, it just wants it to specifically have the name "BirdName"

I don't think that is the problem though.

I have resolved your problem. Here is the correct answer (please check if it works)

var matchingBirds = from s in birds where s.Color == mysteryBird.Color select new { BirdName=s.Name };

James Churchill
James Churchill
Treehouse Teacher

Hi Joshua!

Did Irem's last suggestion work for you?

Thanks ~James