LINQ存储过程

时间:2010-02-11 22:07:58

标签: c# sql linq

为搜索表单提供以下存储过程。我使用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 :(得分:0)

在不了解错误的情况下,我唯一可以猜到的(这是一个完全猜测)就是看起来数据库中的PostIt.Date字段不是DateTime,而你试图放它进入DataTable中的DateTime字段。我不确定是否有效。

作为一个侧面点,为什么还需要创建数据表的开销? Linq to Sql收集的内容有什么问题?