最后一个where子句condition和b.CategoryId之间是不是少了一个空格?你在and前加个空格试试。
string sql = "select c.ItemName,b.CategoryName,b.IsPayout,a.TradeDate,a.Amount,a.Explain from List as a,Category as b,Item as c where a.ItemId=c.ItemId and c.CategoryId=b.CategoryId "+condition;
//c.CategoryId=b.CategoryId 后面加个空格