0

我正在开发一个 C# ASP.NET Web 应用程序。我从两个数据库中提取数据。一个是保存我们所有实际数据的数据库,第二个是用于网站用户可以保存“收藏夹”并在以后轻松找到这些数据的数据库。数据库具有以下列:

表格1:

itemid, itemdept, itemdescription

表2:

userid, itemid, itemdept, itemdescription

如果该项目存在于 table2 中(用户已经添加了它),如果它在搜索中再次出现,我想将它标记为可移动,如果它尚未在他们的收藏夹中,我想将它标记为可添加。

我已经将两者的数据拉入数据表中,以便我可以比较它们,但我觉得使用嵌套的 foreach 循环将太乏味,因为查询设置为最多返回 300 个结果。同样要做到这一点,我必须在其中一个表中放置一个 bool 值来标记它已被发现,所以这看起来很乱。

我已经阅读了一些关于 Linq 的内容,但找不到与这种情况完全相同的任何内容。我可以使用 Linq 来完成这样的事情吗?下面是搜索结果页面的(诚然粗略)图像,可能有助于更好地掌握这一点。实际上,添加和删除链接将是图像按钮。

网站布局

4

1 回答 1

0

忘记发布这个解决方案,但我使用了 HashSet 设置,用一个循环进行比较。谢谢大家的意见。

if (User.Identity.IsAuthenticated)
{
    DataColumn dc = new DataColumn("isMarked", System.Type.GetType("System.Int32"));
    ds.Tables[0].Columns.Add(dc);
    string[] strArray = ds.Tables[0].AsEnumerable().Select(s => s.Field<string>("itemid")).ToArray<string>();
    HashSet<string> hset = new HashSet<string>(strArray);
    foreach (DataRow dr in ds.Tables[0].Rows)
    {
         if (hset.Contains(dr["itemid"].ToString().Trim()))
             dr[3] = 1;
         else
             dr[3] = 0;
    }
}
于 2013-07-08T13:27:18.807 回答