如何在C#中有效链接两个数据集?

时间:2012-07-23 18:32:39

标签: c# linq

我有以下课程,其中包含评论:

   public class Review
    {
        public string PartitionKey { get; set; }
        public string RowKey { get; set; }
    }

    IEnumerable<Review> review = // Filled with about 1000 reviews

我还有一个包含主题的课程:

    public class Topics
    {
        public string PartitionKey { get; set; }
        public string RowKey { get; set; }
        public string Topic { get; set; }
    }

    IEnumerable<Topic> topic = // Filled with about 300 topics

Review中RowKey的第一个 SIX 字符与Topics中的RowKey相同。两种情况下的分区键都是空字符串而不使用。

我在评论课中有大约1000条记录,在主题类中有300条记录。

我是否有一种很好的方法可以使用LINQ将Review和Topics结合起来填充下面的新类:

 public class ReviewGrid
    {
        public string PartitionKey { get; set; }  // PartitionKey from Review
        public string RowKey { get; set; }  // RowKey from Review
        public string Topic { get; set; }   // This would be the Topic from Topics
    }

如果我使用LINQ这样做会花费很长时间来创建,有没有办法让它创建更快?

3 个答案:

答案 0 :(得分:1)

我认为您正在寻找PartitionKey的加入

var reviewGrids = (from r in review
                   join t in topic on r.RowKey.Substring(0, 6) equals t.RowKey
                   select new ReviewGrid
                   {
                     r.PartitionKey,  
                     r.RoWKey,
                     t.Topic,
                   }).ToList();

答案 1 :(得分:0)

你试过这个吗?

IEnumerable<ReviewGrid> rivewGrid = (from r in review
                                    join t in topic on r.PartitionKey equals t.PartitionKey
                                    select new ReviewGrid {
                                       PartitionKey = r.PartitionKey,
                                       RowKey = r.RowKey,
                                       Topic  = t.Topic
                                    })AsEnumerable<ReviewGrid>();

答案 2 :(得分:0)

var reviewGrid = r.Join(t,
                x => x.PartitionKey + x.RowKey.Substring(6),
                y => y.PartitionKey + x.RowKey,
                (x,y)=>new { x.RowKey,x.PartitionKey,y.Topic  } );