-1

ID が一致し、テキストが一致しない場合、リスト内の 2 つのオブジェクトを一致させるにはどうすればよいですか?

私のオブジェクトがリストに追加されます:

List<MyObject> list = New List<MyObject>();

これは私のリストかもしれません (これはオブジェクトです):

ID      Text
1       this is some text
2       text1
1       more text
1       a little more
2       text 2
3       XXX

次に、結果を次のようにしたいと思います。

ID      Text
1       this is some text more text a little more
2       text1 text2
3       XXX

forループでforを試してみましたが、理解できます..

for (int i = 0; i < OrderList.Count; i++)
        {
            bool existsMoreThanOnce = false;

            for (int j = i; j < OrderList.Count; j++)
            {
                duplicates.Add(OrderList[i]);
                if (OrderList[i].OrderNumber == OrderList[j].OrderNumber && OrderList[i].OrderText != OrderList[j].OrderText)
                {
                    if(!uniques.Contains(OrderList[j]))
                    {
                        duplicates.Add(OrderList[j]);
                        existsMoreThanOnce = true;
                    }
                }
            }

            if (existsMoreThanOnce == false)
            {
                uniques.Add(OrderList[i]);
            }
        }
4

4 に答える 4

1

まず、クラスを作成します

public class Items
{
    public int ID { get; set; }
    public string Text { get; set; }

    public Items(int id, string text)
    {
        ID = id;
        Text = text;
    }
}

今、私のコードのロジックは

List<Items> objItems = new List<Items>();
        objItems.Add(new Items(1,"Rahul"));
        objItems.Add(new Items(2, "Rohit"));
        objItems.Add(new Items(1, "Kumar"));
        objItems.Add(new Items(2, "Verma"));
        List<Items> objNew = new List<Items>(); //it will hold result
        string str = "";

        for (int i = 0; i < objItems.Count; i++)
        {
            if (objItems[i].ID > 0)
            {
                str = objItems[i].Text;
                for (int j = i + 1; j < objItems.Count; j++)
                {
                    if (objItems[i].ID == objItems[j].ID)
                    {
                        str += objItems[j].Text + " ";
                        objItems[j].ID = -1;
                    }
                }
                objNew.Add(new Items(objItems[i].ID, str));
            }
        }

ObjNew オブジェクトには、必要な出力が含まれています。

于 2013-04-12T14:17:46.967 に答える
0
var result = list1.Concat(list2)
                .GroupBy(x => x.ID)
                .Where(g => g.GroupBy(x=>x.Text).Count() > 1)
                .Select(x => x.Key)
                .ToList();
于 2013-04-12T11:48:04.527 に答える
0

LINQ のGroupBy.

var output = input.GroupBy(i => i.ID)
                  .Select(i => new { ID = i.Key, 
                                   Text = String.Join(" ", 
                                        i.Select(x => x.Text).ToArray()) });
于 2013-04-12T11:41:49.677 に答える