林克加入表与自定义列表问题

本文关键字:自定义 列表 问题 林克 | 更新日期: 2023-09-27 17:51:11

我有一个简单的连接,我想做,但它不是compilng:

    private IEnumerable<decimal> GetSampleListOfIds()
    {
        var samplelList = new List<decimal>
        {
            100200m,
            200200m,
            300200m,
            400200m,
            500200m,
            600200m,
            700200m,
            800200m,
            900200m,
            1000200m,
            1100200m,
            1200200m,
            1300200m,
            1400200m,
            1500200m,
            1600200m,
            1700200m,
            1800200m,
            1900200m,
            2000200m,
        };
        return samplelList;
    }
}
    [Test]
    public void TestGetIds()
    {
        var listOfClientIds = GetSampleListOfIds();
        var resultSet = from c in _container.ClientIDs
                        join l in listOfClientIds on c.ClientGUID == l
                        select c.[some useful attribute]
    }

这基本上就是它的要点,但它没有对"l"进行编译。ClientGUID是一种可以为null的类型。我尝试了显而易见的东西,但我没有从listOfClientIds列表中被识别为十进制类型的对象。

我需要使用into关键字吗,我以前也做过类似的事情,但这真的让我很反感

你有人能解决这个编译错误吗?我打赌我错过了或做了一些愚蠢的事。

林克加入表与自定义列表问题

试试这个:

var resultSet = from c in _container.ClientID
                join l in listOfClientIds on c.ClientGUID equals l
                select c.[some useful attribute]

join子句通过使用特殊的equals关键字。(http://msdn.microsoft.com/de-de/library/bb311040.aspx)

您也可以在不使用join:的情况下执行此操作

var resultSet = from c in _container.ClientID
                where listOfClientIds.Contains(c.ClientGUID)
                select c.[some useful attribute]
var resultSet = from c in _container.ClientID
                where listOfClientIds.Any(l => c.ClientGUID.Contains(l))
                select c.[some useful attribute];

注意:我建议您改进命名——ClientID看起来像是保存客户端ID的单个值(至少不是ID序列(。CCD_ 2看起来也类似于CCD_ 3类型的单个值。我希望使用ClientsIds