嗨,我正在尝试使用DefaultIfEmpty()函数IQueryable,它抛出异常"不支持的重载用于查询运算符'DefaultIfEmpty'." 这是我的代码:
Dinner defaultDinner = db.Dinners.Where(d => d.DinnerID == 5).Single();
Dinner blah;
IQueryable<Dinner> bla = db.Dinners.Where(d => d.DinnerID == id)
.DefaultIfEmpty(defaultDinner);
blah = bla.First();
return blah;
Run Code Online (Sandbox Code Playgroud)
我发现了一种不同的方法,DefaultIfEmpty但我仍然想知道如何解决这个问题......这是例外的第一部分:
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.NotSupportedException:用于查询运算符'DefaultIfEmpty'的不支持的重载.
假设我有N个列表(向量),我想选择其中的x个1<x<[N](x不是预先确定的),所以我将获得func(lists)的最大值。
例如:
l1 = [3,4,7,-2]
l2 = [0.5,3,6,2.7]
l3 = [0,5,8,3.6]
mat = [l1, l2, l3]
result = maximize(func, mat)
def func(mat):
# doing some math between lists. For Example:
sum_list = list(mat[0])
for li in mat[1:]:
sum_list = map(operator.add, sum_list, li)
accum_min_lst = []
for i, val in enumerate(sum_list):
x = sum_list[:i + 1]
accum_min_lst.append(val - max(x))
return min(accum_min_lst)
Run Code Online (Sandbox Code Playgroud)
可能的结果:
[l1], [l2], [l3], [l1,l2], [l1,l3], [l2,l3], [l1,l2,l3]
Run Code Online (Sandbox Code Playgroud)
如果我要写一个简单的解决方案并只运行所有组合,那将永远花费2 ^ N。
我正在尝试使用cvxpy或scipy.optimize.minimize找到解决方案, 但是我很难理解我需要用于解决问题的函数类型,以为也许我应该尝试使用进化算法来找到近似答案,或者也许我应该改用投资组合优化 …
python mathematical-optimization discrete-mathematics scipy cvxopt