我从相关表中获取不同的记录时遇到问题:例如我有两个表名作为Tag和Product。我要为每个产品设置标签。产品表项在标签表上退出的内容不显示商品表上有商品。
public class Tags
{
public int TagId {get;set;}
public string Title {get;set;}
}
public class Products
{
public int Id {get;set;}
public string Title {get;set;}
}
public class ProductsTag
{
public int Id {get;set;}
public int ProductId {get;set;}
public int TagId {get;set;}
}
var tagList = List<Tags>();
tagList.Add(new Tags{TagId = 1, "Cacao"});
tagList.Add(new Tags{TagId = 2, "Banana"});
tagList.Add(new Tags{TagId = 3, "Chevy"});
tagList.Add(new Tags{TagId = 4, "Nuts"});
var productList = List<Products>();
productList.Add(new Products{Id=1, "Chocolate"});
productList.Add(new Products{Id=2, "Chocolate"});
var pTagList = List<ProductsTag>();
pTagList.Add(new ProductsTag{Id=1, ProductId=1, TagId=1});
pTagList.Add(new ProductsTag{Id=2, ProductId=1, TagId=4});
pTagList.Add(new ProductsTag{Id=3, ProductId=2, TagId=1});
foreach(var i in tagList)
{
foreach(var n in pTagList)
{
if(i.TagId!=n.TagId)
{
i.Title;
}
}
}
答案 0 :(得分:0)
我希望这就是你想要的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
List<Tags> tagList = new List<Tags>();
tagList.Add(new Tags { TagId = 1, Title = "Cacao" });
tagList.Add(new Tags { TagId = 2, Title = "Banana" });
tagList.Add(new Tags { TagId = 3, Title = "Chevy" });
tagList.Add(new Tags { TagId = 4, Title = "Nuts" });
List<Products> productList = new List<Products>();
productList.Add(new Products { Id = 1,Title= "Chocolate" });
productList.Add(new Products { Id = 2,Title= "Chocolate" });
List<ProductsTag> pTagList = new List<ProductsTag>();
pTagList.Add(new ProductsTag { Id = 1, ProductId = 1, TagId = 1 });
pTagList.Add(new ProductsTag { Id = 2, ProductId = 1, TagId = 4 });
pTagList.Add(new ProductsTag { Id = 3, ProductId = 2, TagId = 1 });
List<string> missingstuff = new List<string>();
foreach (var i in tagList)
{
int index = pTagList.FindIndex(item => item.TagId == i.TagId);
if (index < 0)
{
missingstuff.Add(i.Title);
}
}
}
public class Tags
{
public int TagId {get;set;}
public string Title {get;set;}
}
public class Products
{
public int Id {get;set;}
public string Title {get;set;}
}
public class ProductsTag
{
public int Id {get;set;}
public int ProductId {get;set;}
public int TagId {get;set;}
}
}
}
答案 1 :(得分:0)
那你想做什么?当你做i.Title
你期望发生什么?
如果您正试图找到不在pTagList中的标签,那么正如您所见,您的两个foreach循环存在缺陷,并且不会这样做。
有些linq会有所帮助......
var unusedTags = tagList
.Except(from tag in tagList
join productsTag in pTagList on tag.TagId equals productsTag.TagId
select tag);