0

我有一张桌子

ID  Name  ExcelID

1   a     1

2   b     1

3   a     2

4   b     2

5   c     2

我需要显示两个 Excel ID 之间的重复项,因此输出应该显示“C”,因为这是 excelid 1 和 2 之间的唯一值。因此,我使用下面的查询来比较两组数据。

var assets = db.FPTStaticDataRatedFinancialAssetBase.OfType<FPTStaticDataRatedFinancialAssetBase>()
            .Where(c => c.FORATExcelId == fptexcel)
            .GroupBy(x => x.Name)
            .Select(y => y.FirstOrDefault()).ToList();


var assetsold = db.FPTStaticDataRatedFinancialAssetBase.OfType<FPTStaticDataRatedFinancialAssetBase>()
            .Where(c => c.FORATExcelId == fptexcelprevious)
            .GroupBy(x => x.Name)
            .Select(y => y.FirstOrDefault()).ToList();

我已将数据分组到两个列表中,一个是 excel id 1,第二个查询是 2。

但是,如果我尝试使用 except 方法来显示不同的值,它只会显示两个列表中的所有值

4

2 回答 2

0
var uniqueItems = db.FPTStaticDataRatedFinancialAssetBase.OfType<FPTStaticDataRatedFinancialAssetBase>()
   .GroupBy(p => p.Name)
   .Where(p => p.Count() == 1)
   .Select(p => p.FirstOrDefault());

应该做的伎俩?

在您提供的列表上尝试,它整齐地返回 item (5, "c", 2)

于 2013-11-07T10:27:53.123 回答
0

您可以搜索只得到一个结果的名称:

var uniqueResult = db.FPTStaticDataRatedFinancialAssetBase.OfType<FPTStaticDataRatedFinancialAssetBase>()
        .Where(c => c.FORATExcelId == fptexcel || c.FORATExcelId == fptexcelprevious)
        .GroupBy(x => x.Name)
        .Where(c => c.Count() == 1)
        .Select(y => y.FirstOrDefault()).ToList();
于 2013-11-07T10:31:19.623 回答