为搜索表单提供以下存储过程。我使用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;
}
}
答案 0 :(得分:0)
在不了解错误的情况下,我唯一可以猜到的(这是一个完全猜测)就是看起来数据库中的PostIt.Date字段不是DateTime,而你试图放它进入DataTable中的DateTime字段。我不确定是否有效。
作为一个侧面点,为什么还需要创建数据表的开销? Linq to Sql收集的内容有什么问题?