在此上下文中仅支持基元类型或枚举类型.Linq to SQL



我有一个表"组件",其中包含"AssemblyGuid"和"PartGuid"列。我有一个组件列表"组件指南">

 var componentsGuids = _input.Select(x =>
            new Component
            {
                AssemblyGuid = x.AssemblyGuid,
                PartGuid = x.DetailGuid,
            }).ToList();

如何使 Linq To Sql 查询通过组合键加载"组件 Guids"列表中的所有组件条目?

   var componentsDb = Context.Components//.ToList() an error occurs here
            .Where(
                x => componentsGuids.Any(
                    y => y.AssemblyGuid == x.AssemblyGuid
                    && y.PartGuid == x.PartGuid));

也许这有助于您找到解决方案。我不确定代码是否开箱即用,但我希望它能清楚地说明这个想法。在列表中连接两个 GUID,并使用 Contains 检查是否存在串联的 GUID 对。

这样的事情应该有效:

var componentsGuidsConcat = componentsGuid
    .Select(p => AssemblyGuid.ToString() + PartGuid.ToString())
    .ToList();
var componentsDb = Context.Components
    .Where(p => componentsGuidsConcat.Contains(
        p.AssemblyGuid.ToString() + p.PartGuid.ToString())
    );

最新更新