如何检查Guid值是否在结构列表中?

时间:2013-11-10 17:45:14

标签: linq list struct

如何检查Guid值是否在结构列表中?

public struct Info
{
   public Guid EntityTypeID;
   public String Name;
}


List<Info> InfoList = <function which populates the list of Struct>
...

var values = ctx.EntityValues.Where(v => v.EntityID == e.ID
                               && InfoList.Contains(v.EntityTypeItemID)).ToList(); <=== problem here!
                //or something like: InfoList[i].EntityTypeID.Contains(v.EntityTypeItemID)).ToList();

谢谢

1 个答案:

答案 0 :(得分:0)

我怀疑你正在寻找Any

... InfoList.Any(x => x.EntityTypeID == v.EntityTypeItemID)

您无法使用Contains,因为您正在寻找与该项目的部分匹配的内容。

(我也强烈反对使用公共领域,并且确实拥有可变结构,但这是另一回事。)

另一种选择是创建您感兴趣的GUID列表:

var guids = InfoList.Select(x => x.EntityTypeID).ToList();

然后你可以使用:

... guids.Contains(v.EntityTypeItemID)

这可能适用于前一个代码没有的地方,因为它将类型ID的提取移出主查询。