我有一个简单的连接,我想做,但它不是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类型的单个值。我希望使用Clients
和Ids
。