我正在开发一个C#ASP.NET Web应用程序。我从两个数据库中提取数据。一个是保存我们所有实际数据的数据库,第二个是使用,以便网站的用户可以保存“收藏夹”并在以后轻松找到这些数据。数据库包含以下列:
表1:
itemid, itemdept, itemdescription
表2:
userid, itemid, itemdept, itemdescription
如果该项目存在于table2中(用户已经添加了该项目),我想将该项目标记为可移动的,如果它在搜索中再次出现,并且如果它还没有在他们的收藏夹中则可添加。
我从两个数据库中获取数据,所以我可以比较它们,但我觉得使用嵌套的foreach循环将太繁琐,因为查询被设置为返回最多300个结果。另外,为了做到这一点,我必须在其中一个表中添加一个bool值来标记它被找到,所以这看起来很混乱。
我在Linq上读过一些内容,但找不到与此场景完全相同的内容。我可以用Linq来完成这样的事吗?下面是搜索结果页面的一个(公认的粗略)图像,可能有助于更好地掌握这一点。在实际交易中,添加和删除链接将是图像按钮。
答案 0 :(得分: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;
}
}