标签: lambda

使用Expression.Block编译的委托继续抛出NullReferenceException

我正在尝试构建一个为给定对象分配多个属性的Expression,但是在调用已编译的委托之后,它会继续NullReferenceException在lambda体内抛出一个:

var a = Expression.Parameter(typeof(A), "a");
var b = Expression.Parameter(typeof(B), "b");
var c = Expression.Parameter(typeof(C), "c");

LabelTarget returnTarget = Expression.Label(typeof(A));
GotoExpression returnExpression =
    Expression.Return(returnTarget, a, typeof(A));
LabelExpression returnLabel = Expression.Label(
    returnTarget, Expression.Constant(null, typeof(A)));

var expression = Expression.Lambda<Func<A, B, C, A>>(
    Expression.Block(
        typeof(A),
        new[] { a, b, c },
        Expression.Assign(
            Expression.Property(a, typeof(A).GetProperty("B")),
            b),
        Expression.Assign(
            Expression.Property(a, typeof(A).GetProperty("C")),
            c),
        returnExpression,
        returnLabel
    ), 
    a, b, c);

Func<A, B, C, A> func = expression.Compile();

// Calling func throws a NullReferenceException
A result = …
Run Code Online (Sandbox Code Playgroud)

.net c# lambda expression .net-4.0

0
推荐指数
1
解决办法
436
查看次数

找出lambda演算/ haskell类型的一些例子

假设函数将两个不同类型的变量作为其输入(例如,一个变量在C语言中为int,一个变量在C语言中为char)并返回一个变量Int.

如果此函数被编码为Haskell或lambda演算代码,函数的类型将如何?

所以假设函数有类型Int -> (Char -> Char) -> Int.这意味着什么?这是否意味着它接收int变量作为输入并运行函数(Char -> Char)和输出Int变量?

lambda haskell lambda-calculus

0
推荐指数
1
解决办法
230
查看次数

如何在Enumerable方法中添加条件语句?

我可能会尝试在这里做一些可能无法做到的事情.是否可以SingleOrDefault在我正在构建的表达式上为可枚举方法注入一些逻辑.

这笔交易是我会得到(2)相同的查询结果,而不是用于拉取结果的参数.

交易是ID和ID2价值并非在所有条件下都存在.我正在尝试创建一个基于条件缩小结果的单个表达式.这是我想要完成的事情:

//'ID' and 'ID2' sre parameters passed into method
var query = Repository.GetQuery<Person>()
                      .Include(x => x.PersonDetail)
                      .SingleOrDefault(
                                       if (String.IsNullOrWhiteSpace(ID))
                                       {
                                         x => x.PersonDetail.ID2 == ID2;
                                       }
                                       else
                                       {
                                         x => x.PersonDetail.ID == ID;
                                       }
                                       );
Run Code Online (Sandbox Code Playgroud)

现在它不会构建并产生以下错误:

无法解析符号PersonDetail

好吧,所以我可能已经完全解释了实现,但基本上我可以像上面尝试的那样做,或者我必须编写(2)单独的查询来拉动相同的数据,并保持"决定逻辑"在外部表达?

任何帮助表示赞赏,谢谢!

c# linq lambda

0
推荐指数
1
解决办法
122
查看次数

确定可变参数C++ 11模板化lambda函数的返回类型

我有以下功能;

template<typename T, typename U, typename... Parameters>
void transform(void (*func)(Parameters...))
               {
                  auto lambda_function = [func](T args, U params)
                  {
                     auto combined = std::tuple_cat(args, params);
                     helper(func, combined);
                  };
                  return lambda_function;
               }
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到一个可行的返回类型,或者打电话的方式,我希望能够将其称为相似的;

auto func = transform<std::tuple<char,int>, std::tuple<const char*>>(f);
func(arg, param);
Run Code Online (Sandbox Code Playgroud)

鉴于'f','arg'和'param'为;

void f(char arg1, int arg2, const char* arg3);
std::tuple<char,int> arg = std::tuple<char,int>('C',-3);
std::tuple<const char*> param = std::tuple<const char*>("PO");
Run Code Online (Sandbox Code Playgroud)

任何人都有提示,甚至解决方案?

注意:代码可以在; 连锁

c++ lambda freestanding c++11

0
推荐指数
1
解决办法
162
查看次数

由Enum进行Lambda查询过滤

我有以下lamba查询,似乎总是返回所有记录,即使在int?status pamameter不为null且有效.任何人都知道为什么Enum过滤器不被尊重?谢谢阅读!

public ActionResult GetArrivals(int facilityId, int? status)
{
    var registrationList = db.Registrations
            .Where(f => f.Facility.Id == facilityId)
            .Where(a => a.ArrivalDateTime >= DateTime.Today)
            .OrderBy(ln => ln.User.LastName)
            .OrderBy(fn => fn.User.FirstName);


    if (status.HasValue)
    {
        UrgentCareWaitWeb.Models.RegistrationStatus statusValue;

        if (Enum.TryParse(status.Value.ToString(), out statusValue) == true)
        {
            registrationList
                .Where(s => s.Status == statusValue);
        } 
    }



    // Project query to view
    var pview = registrationList.Select(r => new PatientRegistrationsView()
            {
                ArrivalId = r.Id,
                UserId = r.User.UserId,
                UserName = r.User.UserName,
                FirstName = r.User.FirstName,
                LastName = r.User.LastName,
                PrimaryPhone = r.User.PrimaryPhone, …
Run Code Online (Sandbox Code Playgroud)

linq asp.net-mvc lambda

0
推荐指数
1
解决办法
964
查看次数

无法隐式转换类型错误

我有一个任务是创建一个类Student并创建一个方法,只有当他们的名字在使用LINQ查询运算符的字母顺序排在他们的姓氏之前时才从数组中选择Students.我写过这Student堂课:

public class Student
{
     private string firstName;
     private string familyName;
     private int age;

    public Student(string firstName, string familyName, int age)
        : this()
    {
        this.firstName = firstName;
        this.familyName = familyName;
        this.age = age;
    }

    public Student()
    {
        firstName = "Dancho";
        familyName = "Mastikata";
        age = 24;
        this.firstName = firstName;
        this.familyName = familyName;
        this.age = age;
    }

    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }

    public string FamilyName
    { …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda

0
推荐指数
1
解决办法
990
查看次数

在Haskell中,将Lambda函数转换为常规函数

这是我想要了解的Haskell程序的片段:

englishToFrench =  [("the", "le"),("savage", "violent"),("work", "travail"),
         ("wild", "sauvage"),("chance", "occasion"),]

data Entry = Entry {word       :: String,
                    definition :: String,
                    length'    :: Int}
             deriving Show

listOfEntries = map (\(x, y) -> Entry x y (length x)) englishToFrench
Run Code Online (Sandbox Code Playgroud)

简而言之,该程序获取一个String元组列表,并生成一个Entry对象列表.

但是,我不喜欢中的lambda函数map,我想创建一个常规函数来替换它.

我尝试了这个,但它给了我一个错误,x和y不在范围内:

entryBuilder x y = Entry x y (length x)

entries = map (entryBuilder x y) englishToFrench
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何转换lambda函数和一般方法是什么?

lambda haskell function

0
推荐指数
1
解决办法
258
查看次数

LINQ,Lambda,困惑

任何人都可以解释为什么我没有看到WriteLine的(我的)预期输出?当我在VS中调试它并刷新'结果'以在VS内的本地窗口中查看其内容时,我可以看到它.谢谢

Func<Category, bool> del = (Category cat) => { 
    System.Console.WriteLine(cat.CategoryName);
    return cat.CategoryID > 1; 
};


NorthwindEntities nw = new NorthwindEntities();

var result = nw.Categories.Where<Category>(del);

Console.Read();
Run Code Online (Sandbox Code Playgroud)

c# linq lambda

0
推荐指数
1
解决办法
92
查看次数

如何正确定位Ruby lambda?

我有这个lambda:

echo_word = lambda do |words|
  puts words
  many_words = /\w\s(.+)/
    2.times do
      sleep 1
      match = many_words.match(words)
      puts match[1] if match
    end
  sleep 1
end
Run Code Online (Sandbox Code Playgroud)

我希望将它each作为一个块传递给它,并且将来每个块都会更多.

def is_there_an_echo_in_here *args
  args.each &echo_word # throws a name error
end

is_there_an_echo_in_here 'hello out there', 'fun times'
Run Code Online (Sandbox Code Playgroud)

但是当我用这个lambda方法运行my_funky_lambda.rb时,我得到一个NameError.我不确定这个lambda的范围是什么,但我似乎无法访问它is_there_an_echo_in_here.

echo_word如果我使它成为常量ECHO_WORD并使用它就适当地限定和使用,但必须有一个更直接的解决方案.

在这种情况下,echo_word从内部访问lamba 的最佳方法是什么is_there_an_echo_in_here,例如将其包装在模块中,访问全局范围,还有其他什么?

ruby lambda

0
推荐指数
1
解决办法
705
查看次数

获取字典中值的实例数

如何在包含lambda表达式的字符串列表的字典中获取值的实例数?

private Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();
Run Code Online (Sandbox Code Playgroud)

以下需要改进以消除错误; 基本上无法将字符串与字符串列表进行比较.

int count = dict.Values.Count(v => v == "specific value");
Run Code Online (Sandbox Code Playgroud)

c# lambda

0
推荐指数
2
解决办法
1038
查看次数