我有一个数据库如下:
TABLE_B:
ID Name LISTID
1 NameB1 1
2 NameB2 1,10
3 NameB3 1025,1026
选择具有ID的表的列表数据。我用过:
public static List<ListData> GetDataById(string id)
{
var db = Connect.GetDataContext<DataContext>("NameConnection");
var sql = (from tblB in db.TABLE_B
where tblB.LISTID.Contains(id)
select new ListData
{
Name= tblB.Name,
});
return sql.ToList();
}
当我调用该函数时: GetDataById(&#34; 10&#34;)==&gt;数据返回&#34; NameB2,NameB3&#34;不正确。 数据正确是&#34; NameB2&#34;。请帮帮我吗? 谢谢!
答案 0 :(得分:1)
值10
将导致意外匹配,因为LISTID是一个字符串/ varchar类型,如您所见,并且Contains函数不知道应该考虑的分隔符。
修复可能非常简单:使用额外的逗号包围您正在寻找和 LISTID的ID。
所以你现在要找,10,
值,10,
将在,1,10,
中找到,而不在,1025,1026,
LINQ where
子句就变成了这个:
where ("," + tblB.LISTID + ",").Contains("," + id + ",")