如何与linq中的数组进行比较并获取至少有一个交集的所有元素? 例如:
selectes = {1,5,7}
Bands[0].SongsID {1,9}
Bands[1].SongsID {5,6}
Bands[2].SongsID {4,6}
我需要选择Bands[0]
和Bands[1]
。
我试过这个:
var selectes2 = Bands.Where(t => t.SongsID.Intersect(selectes));
乐队班:
public class Band
{
public int ID { get; set; }
public string Name { get; set; }
public DateTime YearOfCreate { get; set; }
public string Country { get; set; }
public int[] SongsID { get; set; }
}
答案 0 :(得分:5)
var selectes2 = Bands.Where(t => t.SongsID.Intersect(selectes).Any());
答案 1 :(得分:1)
假设您要选择任何具有与您的ID列表匹配的歌曲ID的乐队,您可以通过以下方式实现:
var matchingBands = Bands.Where(band => band.SongsID.Any(selectes.Contains));