Narbs
Narbs

Reputation: 45

View displays entire SQL query instead of displaying result set

I have two linq queries in my controller that are both designed to return a string. However, my view displays the entire SQL query generated from the Linq query.

Model:

public class DummyClass
{
    public string myMessage { get; set; }
    public string myInitials { get; set; }
}

Controller:

public ActionResult EmployeeSignature()
{
    using (MessageInfo db = new MessageInfo())
    {
        var message = db.SiteMessage_MyPay
                        .Where(x => x.active)
                        .Select(x => x.msgText).ToString();

        using (DocumentReviewed database = new DocumentReviewed())
        {
            var document = database.Document_Reviewed
                                   .Where(x => x.FileNumber == "whatever")
                                   .Select(x => x.Initials).ToString();

            var model = new DummyClass()
                {
                    myMessage = message,
                    myInitials = document
                };

            return View(model);
        }
    }
}

View:

@model MyPayTC.Models.DummyClass
@{
    ViewBag.Title = "EmployeeSignature";
}

@Model.myInitials

@Model.myMessage

Website displays:

SELECT [Extent1].[Initials] AS [Initials] 
FROM [dbo].[Document_Reviewed] AS [Extent1] 
WHERE '105057' = [Extent1].[FileNumber]

Upvotes: 1

Views: 108

Answers (1)

Andres2142
Andres2142

Reputation: 2897

Instead of using .ToString( ), you should use .FirstOrDefault(), ToList(), etc like this:

var message = db.SiteMessage_MyPay
                .Where(x => x.active)
                .Select(x => x.msgText).FirstOrDefault();

Or, if you want to retrieve some columns, you can use ToArray() or ToList().

Upvotes: 2

Related Questions