C# LINQ列表查询另一个列表的内容

C# LINQ列表查询另一个列表的内容,c#,linq,list,C#,Linq,List,我有一个List\u locationData,它包含一个唯一标识符uid,它是一个字符串。我想使用LINQ查询返回一个包含uid的列表 public IQueryable<Location> FindAll(List<string> uids) { return _locationData.AsQueryable().Where(z => z.uid.Any(v => uids.Equals(v))); } public

我有一个List\u locationData,它包含一个唯一标识符uid,它是一个字符串。我想使用LINQ查询返回一个包含uid的列表

  public IQueryable<Location> FindAll(List<string> uids)
    {
        return _locationData.AsQueryable().Where(z => z.uid.Any(v => uids.Equals(v)));
    }
public IQueryable FindAll(列出UID)
{
返回_locationData.AsQueryable(),其中(z=>z.uid.Any(v=>uids.Equals(v));
}

您可以试试这个:

public IQueryable<Location> FindAll(List<string> uids)
{
    return _locationData.AsQueryable().Where(z => uids.Contains(z.uid));
}
public IQueryable FindAll(列出UID)
{
返回_locationData.AsQueryable(),其中(z=>uids.Contains(z.uid));
}

这将检查位置数据中的每个元素是否包含在列表
uids
中。如果是,那么将在返回的结果中包含该位置

要使用列表中的
包含

return _locationData.AsQueryable().Where(z => uids.Contains(z.uid));

如果您不严格要求结果是可查询的,并且这只是为了方便linq从何处返回,您可以这样做:

private List<Location> FindAll(List<string> uids)
{
    return _locationData.FindAll(location => uids.Contains(location.uid));
}
私有列表FindAll(列表UID)
{
返回_locationData.FindAll(location=>uids.Contains(location.uid));
}

您也可以尝试这样的连接:

public IQueryable<Location> FindAll(List<string> uids)
{
    return _locationData.AsQueryable().Join(uids, l => l.uid.ToString(), s => s, (l, s) => l);
}
public IQueryable FindAll(列出UID)
{
返回_locationData.AsQueryable().Join(uids,l=>l.uid.ToString(),s=>s,(l,s)=>l);
}