Хранимая процедура LINQ - PullRequest
       9

Хранимая процедура LINQ

1 голос
/ 12 февраля 2010

Имейте следующую хранимую процедуру для формы поиска. Я использую Linq, и у меня возникли проблемы с получением результата этой процедуры .... Я ошибаюсь в процедуре или в linq?

Здесь вы также можете увидеть мой linq .. Я пробовал разные способы ... но теперь мне нужна ваша помощь:)

ALTER PROCEDURE [dbo].[SearchPostit]
 (
 @message varchar(1000)='', 
 @writer varchar(50)='',
 @mailto varchar(100)='',
 @date varchar(50)=''
 )
AS
 SELECT P.Message AS Postit, P.Mailto AS 'Mailad till', P.[Date] AS Datum, U.UserName AS Användare  
 FROM PostIt P 

 LEFT OUTER JOIN [User] U ON P.UserId=U.UserId

    WHERE P.message LIKE '%'+@message+'%' AND  U.UserName LIKE '%'+@writer+'%' AND P.Mailto LIKE '%'+@mailto+'%' 
    AND P.Date LIKE '%'+@date+'%' 
    GROUP BY P.Message, U.UserName, P.Mailto, P.[Date]



System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)]
        public DataSet SearchPostit(string message, string writer, string mailto, string date)
        {
            var dc = new LinqClassesDataContext();

            List<SearchPostitResult> p = dc.SearchPostit(message, writer, mailto, date).ToList();

            DataTable dt = new DataTable();

            dt.Columns.Add("Message", typeof(string));
            dt.Columns.Add("UserName",typeof (string));
            dt.Columns.Add("E-mail", typeof(string));
            dt.Columns.Add("Date",typeof(DateTime));

            foreach(SearchPostitResult res in dc.SearchPostit(message, writer, mailto, date))
            {
                DataRow row = dt.NewRow();

                row["Message"] = res.Postit;
                row["UserName"] = res.User;
                row["E-mail"] = res.Mailto;
                row["Date"]=res.Date;

                dt.Rows.Add(row);
            }
                DataSet ds = new DataSet();
                ds.Tables.Add(dt);
                return ds;
            }

        }

1 Ответ

0 голосов
/ 12 февраля 2010

Не зная об ошибке, единственное, что я могу догадаться (и это общее предположение), это то, что поле PostIt.Date в базе данных выглядит не как DateTime, и вы пытаетесь поместить это в поле DateTime в DataTable. Я не уверен, что это работает.

Как побочный вопрос, зачем вам все равно создавать накладные расходы на создание данных? Что не так с коллекцией, которую Линк возвращает вам?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...