0

関連テーブルから異なるレコードを取得するときに問題があります。たとえば、Tag と Product という 2 つのテーブル名があります。製品ごとにタグを設定します。このアイテムが存在する場合、タグテーブルに存在する製品テーブルアイテムは表示されません商品表です。

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;
        }
    }
}
4

2 に答える 2

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;}
}


    }

}
于 2013-12-19T10:07:43.037 に答える
0

それで、あなたは何をしようとしていますか?あなたが何をするとき、あなたはi.Title何が起こると期待していますか?

pTagList にないタグを見つけようとしている場合は、ご覧のとおり、2 つの foreach ループに欠陥があり、それを実行できません。

ただし、いくつかのlinqが役立ちます...

var unusedTags = tagList
        .Except(from tag in tagList
            join productsTag in pTagList on tag.TagId equals productsTag.TagId
            select tag);
于 2013-12-19T10:08:29.993 に答える