bongo700
bongo700

Reputation: 67

LINQ Query not returning actual values

I'm trying to use LINQ to compare what a user enters in a search bar against a table.

 public ActionResult GetLibrary(string searchString, string lib)
    {
        var libraries = Database.Session.Query<Library>().ToArray();

        string searchedLib = (from l in libraries
                              where l.CR_Name.Contains(searchString)
                              select new Library()
                              {
                                  CR_Name = l.CR_Name
                              }).ToString();

        lib = searchedLib;

        return RedirectToAction(actionName: "GetLibInfo",
            controllerName: "Home",
            routeValues: new { lib });
    }

Instead of returning an actual value, the query is returning this instead: "System.Linq.Enumerable+WhereSelectArrayIterator'2[Models.ModelName, Models.ModelName]"

Upvotes: 0

Views: 698

Answers (1)

moarboilerplate
moarboilerplate

Reputation: 1643

That WhereSelectArrayIterator is an IEnumerable representing a set of results. If you only want/expect one "row," use Single() or First().

var searchedLib = (from l in libraries
                      where l.CR_Name.Contains(searchString)
                      select l).First();

var name = searchedLib.CR_Name;

The simplest way:

var name = libraries.First(l => l.CR_Name.Contains(searchString)).CR_Name

Upvotes: 4

Related Questions