小编Mic*_*hel的帖子

在具有多个Where语句的循环中过滤IQueryable

我有这个代码

private static IQueryable<Persoon> Filter(IQueryable<Persoon> qF, IDictionary<string, string> filter)
{
    IQueryable<Persoon> temp;
    temp = qF;
    foreach (var key in filter)
    {
        if (key.Key == "naam")
        {
            temp = temp.Where(f => f.Naam == key.Value);
        }
        else if (key.Key == "leeftijd")
        {
            temp = temp.Where(af => af.Leeftijd != null && af.Leeftijd.AantalJaarOud.ToString() == key.Value);
        }
    }
    return temp;

}
Run Code Online (Sandbox Code Playgroud)

它的作用(它是用来测试行为的简化版本)是你给这个函数一个IQueryable of Persoon(来自数据库)和一个过滤器列表.

所以你给过滤器naam,john和leefttijd,30你得到所有Persoon objecten名为John和30岁.

当我首先进入循环时,在我第一次进入循环之后(leeftijd where)在它之后,我看到tmp有3个对象.然后代码在循环中第二次进入,进入第一个If(其中filter eq naam)并且在那里,当我看到tmp时,它只有0个对象.

它的第一个观点是不起作用的是,该函数没有返回任何结果(应该是2:3 30和2的约翰).所以我得出结论是多重.问题出在哪里.

但是现在我看到,即使我做第二次,温度也是空的.

我究竟做错了什么?

c# linq

4
推荐指数
1
解决办法
3913
查看次数

当我只有枚举的类型时,如何获取枚举的整数值

我认为这个问题需要一些代码:

private TypeValues GetEnumValues(Type enumType, string description)
        {
            TypeValues wtv = new TypeValues();
            wtv.TypeValueDescription = description;
            List<string> values = Enum.GetNames(enumType).ToList();
            foreach (string v in values)
            {
                //how to get the integer value of the enum value 'v' ?????
                wtv.TypeValues.Add(new TypeValue() { Code = v, Description = v });
            }
            return wtv;

        }
Run Code Online (Sandbox Code Playgroud)

像这样称呼它:

GetEnumValues(typeof(AanhefType), "some name");
Run Code Online (Sandbox Code Playgroud)

GetEnumValues函数中我有枚举的值.所以我迭代值,我想得到该枚举值的整数值.

所以我的值是'红色'和'绿色',我也希望得到0和1.

当我在我的函数中使用Enum时,我可以从字符串创建枚举值并将其转换为该枚举,然后将其转换为int,但在这种情况下,我没有枚举本身,但只有类型的枚举.

我尝试将实际枚举作为参数传递,但我不允许将枚举作为参数传递.

所以现在我被困了.....

c# enums

4
推荐指数
2
解决办法
4955
查看次数

什么是提供一系列唯一数字(C#vs Sql)的好方法?

我必须为我的应用程序的客户提供一个唯一的号码.这是一个发票号码,所以它必须是唯一的,并且线程安全.

在过去,我创建了一个单例并使用了一个锁定语句:在锁定期间,我将转到数据库并获取一个新数字,然后释放锁定.

有些东西告诉我这也可以在SqlServer中完成,但在SqlServer中我假设我还必须创建某种锁,因为sql代码(存储过程)也可以并行执行,我猜.

所以当我不得不提供一个锁时,它是否会在c#或Sql中有所作为?

c# sql sql-server

4
推荐指数
1
解决办法
186
查看次数

使用System.Messaging.MessageQueue或WCF for MSMQ?

5年前,我开发了一个使用MSMQ的程序.

那时候,我使用了System.Messaging.MessageQueueSystem.Messaging.MessageQueueTransaction将项目放在msmq上.

现在我看到人们使用WCF,我很困惑使用WCF.

首先,大多数代码示例仅显示如何使用WCF将项目放入队列,而不是获取OFF,但更重要的是:当我使用WCF/MSMQ解决方案时,我必须创建一个额外的项目,即wcf服务.

创建一个wcf服务当然不是问题,但我还必须在生产中安装它.

所以我想知道:为什么我应该使用wcf将项目放在队列中,而不是使用.Net对象的解决方案?

或者我是不正确的,我认为当我使用scf,我需要一个额外的应用程序,即wcf应用程序?

编辑:痤疮是这样的:我们有一个人们可以取消订阅的网站.我们不是直接命中数据库(取消订阅),而是将取消订阅请求放在队列中,另一个服务(Windows服务或控制台应用程序)将从队列中获取项目并执行数据库操作

.net c# wcf msmq

4
推荐指数
1
解决办法
1781
查看次数

不可变的集合?

我使用readonly集合来防止用户改变我的缓存数据,但这些项目本身就是muatble.有没有办法防止这种行为?

米歇尔

c# asp.net

4
推荐指数
1
解决办法
226
查看次数

获取强类型接口方法的名称

我有一个像这个例子的界面:

Interface IRequest{

  List<profile> GetProfiles();
  void SetProfile (Profile p);
}
Run Code Online (Sandbox Code Playgroud)

现在,在某些日志记录组件中,我无法访问实现该接口的对象,但我想使用接口中方法的名称.我当然可以将它们键入为字符串(将方法名称复制到字符串中),但我想使用强类型,因此我不必保持方法名称和字符串同步.

在伪代码中,我会这样做:

string s= IRequest.GetProfiles.ToString()
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

编辑:

也许我应该调用它:使用接口,就像它是一个枚举字符串s = IRequest.GetProfiles.ToString()

c# c#-4.0

4
推荐指数
2
解决办法
4467
查看次数

在哪里加载数据以填充具有多个poco类的viewmodel

我必须在表单中显示一个对象(一个POCO类).

在我的控制器中,我从对象存储库中获取对象数据.

但在表单中,我还必须显示一些关于该对象的额外数据,例如国家名称而不是countryid,分配的人数(从1:N关系中获取),编辑历史(要获取)从另一个表)和'CanBeCancelled'位.

问题是:我应该把这个逻辑放在哪里?

我提出了这些替代方案:

  • 存储库本身:创建一个额外的函数,返回这个精确的viewmodel
  • 转换服务,它将类转换为viewmodel(它知道从何处获取数据)
  • 控制器:它知道在视图(模型)中显示什么数据,因此它应该从不同的存储库获取所有数据

放置此逻辑的好方法是什么(使用'this logic'我的意思是知道在存储库A中获取人数的逻辑,历史记录由存储库B获取,countryname由CountryRepository和布尔值获取'CanBeCancelled'是由StateEngine服务获取的)?

c# asp.net-mvc

4
推荐指数
1
解决办法
171
查看次数

在VS2015中定位.Net 4.5但我可以使用C#6功能吗?

我正在VS2015中开展一个针对.Net framework 4.5的项目

在构建设置中,语言版本设置为"默认"

正如我读出,C#6中的.Net 4.6只添加,但我AM允许的(至少,代码编译和运行)使用string interpolation功能,该功能我读过是C#6的特征.

现在我很困惑:我现在正在编译C#6/.Net 4.6或.Net 4.5(我怎么能检查?)

编辑

在评论中我看到C#6语法与.NET框架版本无关.我从这个答案中得到了一个想法(C#的正确版本号是什么?)其中说的是用.NET 4.6和VS2015(2015年7月)发布的"C#6.0".所以我理解C#6(以某种方式)与.NET 4.6相关联

c# c#-6.0 visual-studio-2015

4
推荐指数
1
解决办法
644
查看次数

如何在没有entityframework提供程序的情况下在.net核心中实现谷歌登录

我正在为我的.net核心网站实施Google登录.

在这段代码中

var properties = signInManager.ConfigureExternalAuthenticationProperties("Google", redirectUrl);      
return new ChallengeResult("Google", properties); 
Run Code Online (Sandbox Code Playgroud)

我需要一个signInManager(通过代码示例)这个:

private SignInManager<AppUser> signInManager;
Run Code Online (Sandbox Code Playgroud)

我通过构造函数注入它,然后我收到此错误:

尝试激活"AccountController"时,无法解析类型"Microsoft.AspNetCore.Identity.SignInManager1 [AppUser]"的服务.

谷歌搜索了我应该包括这个

services.AddIdentity<AppUser, IdentityRole>()
    .AddDefaultTokenProviders();`
Run Code Online (Sandbox Code Playgroud)

但这给了我这个错误:

尝试激活"Microsoft.AspNetCore.Identity.AspNetUserManager1 [AppUser]"时,无法解析类型"Microsoft.AspNetCore.Identity.IUserStore1 [AppUser]"的服务.

在那一刻,我得到了建议:

.AddEntityFrameworkStores<ApplicationDbContext>()
Run Code Online (Sandbox Code Playgroud)

但后来我迷路了,因为为什么SignInManager需要a IUserStore,我应该添加一个 UserStore和一个DBContext和一个EntityFramework商店,当我不会使用它(我的谷歌登录)?

所以问题是:我可以在没有Entityframework商店的情况下进行Google登录吗?

c# authentication asp.net-core-mvc .net-core asp.net-core

4
推荐指数
1
解决办法
2264
查看次数

计算 1 种颜色的颜色范围,从浅色到深色(er)色

我发现了这个漂亮的调色板 在此处输入图片说明

我想用它让用户从这个调色板中选择一个调色板作为前 8 种颜色(垂直)。所以我想我可以添加更多,当然不要输入所有的十六进制代码。

有没有办法计算这些值?

因此,例如输入颜色 c6ff89(或任何其他颜色),然后以 498e00(右列)结尾。

所以潜在的问题是:对这些颜色有数学运算吗?

其次,现在我正在查看这些颜色:顶行的项目看起来都是同一种“亮度”(不知道该使用什么术语)。我的意思是左边是相同的蓝色光,右边是绿色光,所以相同的亮度(/暗度)。是否也可以计算,例如为红色或橙色计算相同类型的亮度?

color-scheme colors

4
推荐指数
1
解决办法
239
查看次数