-1

如何检查 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();

谢谢

4

1 回答 1

0

我怀疑你正在寻找Any

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

您不能使用Contains,因为您正在寻找与项目的一部分匹配的东西。

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

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

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

然后你可以使用:

... guids.Contains(v.EntityTypeItemID)

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

于 2013-11-10T17:47:48.523 回答