小编Ell*_*hen的帖子

DefaultIfEmpty()不起作用

嗨,我正在尝试使用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'的不支持的重载.

c# linq

8
推荐指数
1
解决办法
8152
查看次数

寻找具有最大功能值的列表的最佳组合

假设我有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。

我正在尝试使用cvxpyscipy.optimize.minimize找到解决方案, 但是我很难理解我需要用于解决问题的函数类型,以为也许我应该尝试使用进化算法来找到近似答案,或者也许我应该改用投资组合优化 …

python mathematical-optimization discrete-mathematics scipy cvxopt

5
推荐指数
1
解决办法
852
查看次数