Reputation: 67
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
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