标签: func

C# 将 Func<T, List<myClass>> 数组传递给方法

我的第一篇(也是非常可怕的帖子)如下。

我尝试做一个完整的例子,我想要得到什么。我希望这能得到更好的解释。

using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Boy> boys = new List<Boy>();
            boys.Add(new Boy("Jhon", 7));
            boys.Add(new Boy("Oscar", 6));
            boys.Add(new Boy("Oscar", 7));
            boys.Add(new Boy("Peter", 5));
            ClassRoom myClass = new ClassRoom(boys);

            Console.WriteLine(myClass.ByName("Oscar").Count);  // Prints 2
            Console.WriteLine(myClass.ByYearsOld(7).Count);  // Prints 2

            // This has errors...................
            // But this is as I would like to call my BySomeConditions method....
            Console.WriteLine(  // It should print 1
                                myClass.BySomeConditions([myClass.ByName("Oscar"),
                                                          myClass.ByYearsOld(7)]
                                                        )
                             );
            Console.ReadKey();
        }





        class ClassRoom
        {
            private …
Run Code Online (Sandbox Code Playgroud)

.net c# generics func

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

java相当于__func__

#include <stdio.h>
void someFunc(void) {
  printf("%s\n"), __func__);
}
Run Code Online (Sandbox Code Playgroud)

每次调用该函数时,它将打印:

someFunc
Run Code Online (Sandbox Code Playgroud)

什么是Java等价物?

我已经找到

(new Exception()).getStackTrace()[0].getMethodName()
Run Code Online (Sandbox Code Playgroud)

java.lang.Thread.currentThread().getStackTrace()[1].getMethodName()
Run Code Online (Sandbox Code Playgroud)

但这些看似荒谬,是否有更简单的方法?

java reflection func

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

如何使用linq表达式将方法作为另一个方法的参数传递

我想创建一个在后台线程中运行另一个方法的方法.像这样的东西:

void Method1(string param)
{
    // Some Code
}

void Method2(string param)
{
    // Some Code
}

void RunInThread(AMethod m)
{
   //Run the method in a background thread
}
Run Code Online (Sandbox Code Playgroud)

c# linq expression func

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

如何使用SqlAlchemy中的“CONVERT”函数?

我试过:

from sqlalchemy import VARCHAR
result = session.query(Table).filter(func.convert(VARCHAR(8), Table.datetimefiedld, 8) >= some_date).all()
Run Code Online (Sandbox Code Playgroud)

我收到 AttributeError: 'VARCHAR' 对象没有属性 'self_group'

有人可以解释一下如何在 sqlalchemy 中使用 CONVERT 函数吗?谢谢!

python sqlalchemy func

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

如何使用 FakeItEasy 框架测试 Func&lt;T&gt; 是否被调用?

如何使用FakeItEasy框架检查Func是否被调用?

例子:

Func<bool> myFunc = () => true;

// Unfortunately this fails:
A.CallTo(myFunc.Invoke()).MustHaveHappened();
Run Code Online (Sandbox Code Playgroud)

c# func fakeiteasy

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

func如何正常工作

因此,当我返回一个对象时,我认为它将内存地址返回给您可以引用和使用的对象(或包含内存地址的对象).

但是当你返回一个函数时实际发生了什么?

您的应用如何知道该func使用哪个对象实例?

我的直觉告诉我一个对象实例引用与func一起传递但是实际发生了什么?

我似乎无法在这个主题上找到太多.

编辑:澄清一下,我问一个方法何时返回一个函数

c# func

5
推荐指数
2
解决办法
2093
查看次数

用Java定义具有相同名称但类型参数数量不同的通用接口

在Java(1.7)中,是否可以用相同的名称定义不同类型的参数的多个接口?我正在本质上追求的是精神类似Func<TResult>Func<T1, TResult>Func<T1, T2, TResult>Func<T..., TResult>委托类型的.NET。非常像可选的类型参数

存在于Java语言这样的功能还是只能用名称,如创建不同的接口Func0<TResult>Func1<T1, TResult>Func2<T1, T2, TResult>

java generics interface func java-7

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

Func&lt;T, TResult&gt; 的 Lambda 表达式

我怎样才能将 lambda 表达式写入optionObject.Forms.First(f => f.FormId == formId).MultipleIterationFunc 所以最后我有类似的东西

Func<FormObject, bool> FormID = f => f.formID == passedVal;
Run Code Online (Sandbox Code Playgroud)

然后在第一个表达式上使用它来得到类似的东西

optionObject.Forms.First(FormID).MultipleIteration
Run Code Online (Sandbox Code Playgroud)

我试过

Func<FormObject, PassedVal, bool> FormID => formID == PassedVal;
Run Code Online (Sandbox Code Playgroud)

但没有用。
请注意, lambda 表达式没有任何问题,它工作得很好。我只是想创建一个函数来用函数名称替换表达式,以使代码看起来更短且可维护。

.net c# lambda func

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

如何在提供 IQueryable 输出的 linq 查询中使用 Func

我提供了以下查询(简化版)以从我的服务返回 IQueryable:

var query =
            (from item in _entityRepository.DbSet()
             where
                 MyCondition
             orderby Entity.EntityID descending 
             select new DTOModel
             {
                 Id = Entity.EntityID,

                 ...,

                 //My problem is here, when I trying to call a function into linq query:
                 //Size = Entity.IsPersian ? (Entity.EntitySize.ConvertNumbersToPersian()) : (Entity.EntitySize)

                 //Solution (1):
                 //Size = ConvertMethod1(Entity)

                 //Solution (2):
                 //Size = ConvertMethod2(Entity)
             });
Run Code Online (Sandbox Code Playgroud)

而且根据我的查询,我的服务类中有以下代码:

//Corresponding to solution (1):
Func<Entity, string> ConvertMethod1 = p => (p.IsPersian ? p.EntitySize.ConvertNumbersToPersian() : p.EntitySize);

//Corresponding to solution (2):
Expression<Func<Entity, string>> ConvertMethod2 = (p) => …
Run Code Online (Sandbox Code Playgroud)

c# linq iqueryable func

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

选择异步功能的更好方法?

我一直在重构我的项目中的一个常见模式,发现它不像使用 LINQSelect到异步函数那么简单。

对于上下文,这是当前的完成方式。

async Task<ICollection<Group>> ExecuteQueryGroupsForDomain(DomainInfo domain, int batchSize, CancellationToken ct)
{
    try
    {
        return await BlahBlahActuallyGoGetGroupsForDomainHere(domain, batchSize, ct);
    }
    catch (Exception e)
    {
        return null;
    }
}

var executeQueries = new List<Func<CancellationToken, Task<ICollection<Group>>>>();

domains.ForEach(domain =>
    executeQueries.Add(async (ct) =>
        await ExecuteQueryGroupsForDomain(domain, 123, ct)));

Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试ForEach使用 LINQ替换循环部分:

var executeQueries = domains.Select(domain =>
    async (ct) => await ExecuteQueryGroupsForDomain(domain, 123, ct));
Run Code Online (Sandbox Code Playgroud)

它抱怨Type arguments cannot be inferred by the usage让我相信我没有从 返回任何东西Select,但我显然正在返回Func我想要的。

有没有更好的方法来创建Func's列表,最好避免显式强制转换?当Select …

.net c# linq select func

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