gpt4 book ai didi

c# - 方法 'System.Object DynamicInvoke(System.Object[])' 没有支持的 SQL 转换

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:12 27 4
gpt4 key购买 nike

假设我有一个名为 Poll 的表,我想编写一个 LINQ 扩展来列出 ID 属于一个数组的所有民意调查。例如:

void Main()
{
long[] ids = new long[]{ 1,2,3,4,5,6,7,8,9 };

ListFail<Poll>(Poll, p => p.ID, ids); //Failed!
ListOK<Poll>(Poll, p => p.ID, ids); //OK!
}

public void ListFail<T>(Table<T> obj, Func<T, long> idProperty, long[] ids) where T : class
{
obj.Where(p => ids.Contains(idProperty(p))).ToList().Dump();
}

public void ListOK<T>(Table<T> obj, Func<T, long> idProperty, long[] ids) where T : class
{
obj.ToList().Where(p => ids.Contains(idProperty(p))).ToList().Dump();
}

我不知道为什么我在 ListFail 上遇到错误

Method 'System.Object DynamicInvoke(System.Object[])' has no supported translation to SQL.

当我在 Where 之前添加 ToList() 时,它在 ListOK 上运行良好,但当然我不想得到整个 Poll 表。

有什么想法吗?

最佳答案

更改 Func<T, long>Expression<Func<T, long>> .现在,因此,EF 不理解它。

关于c# - 方法 'System.Object DynamicInvoke(System.Object[])' 没有支持的 SQL 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6226682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com