如何在列表项中使用

时间:2016-12-16 15:12:33

标签: sql linq

我有一个数据库如下:

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;。请帮帮我吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

10将导致意外匹配,因为LISTID是一个字符串/ varchar类型,如您所见,并且Contains函数不知道应该考虑的分隔符。

修复可能非常简单:使用额外的逗号包围您正在寻找 LISTID的ID。

所以你现在要找,10,,10,将在,1,10,中找到,而不在,1025,1026,

LINQ where子句就变成了这个:

where ("," + tblB.LISTID + ",").Contains("," + id + ",")