如何检查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();
谢谢
答案 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的提取移出主查询。