我有这个代码
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的约翰).所以我得出结论是多重.问题出在哪里.
但是现在我看到,即使我做第二次,温度也是空的.
我究竟做错了什么?
我认为这个问题需要一些代码:
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,但在这种情况下,我没有枚举本身,但只有类型的枚举.
我尝试将实际枚举作为参数传递,但我不允许将枚举作为参数传递.
所以现在我被困了.....
我必须为我的应用程序的客户提供一个唯一的号码.这是一个发票号码,所以它必须是唯一的,并且线程安全.
在过去,我创建了一个单例并使用了一个锁定语句:在锁定期间,我将转到数据库并获取一个新数字,然后释放锁定.
有些东西告诉我这也可以在SqlServer中完成,但在SqlServer中我假设我还必须创建某种锁,因为sql代码(存储过程)也可以并行执行,我猜.
所以当我不得不提供一个锁时,它是否会在c#或Sql中有所作为?
5年前,我开发了一个使用MSMQ的程序.
那时候,我使用了System.Messaging.MessageQueue和System.Messaging.MessageQueueTransaction将项目放在msmq上.
现在我看到人们使用WCF,我很困惑使用WCF.
首先,大多数代码示例仅显示如何使用WCF将项目放入队列,而不是获取OFF,但更重要的是:当我使用WCF/MSMQ解决方案时,我必须创建一个额外的项目,即wcf服务.
创建一个wcf服务当然不是问题,但我还必须在生产中安装它.
所以我想知道:为什么我应该使用wcf将项目放在队列中,而不是使用.Net对象的解决方案?
或者我是不正确的,我认为当我使用scf,我需要一个额外的应用程序,即wcf应用程序?
编辑:痤疮是这样的:我们有一个人们可以取消订阅的网站.我们不是直接命中数据库(取消订阅),而是将取消订阅请求放在队列中,另一个服务(Windows服务或控制台应用程序)将从队列中获取项目并执行数据库操作
我有一个像这个例子的界面:
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()
我必须在表单中显示一个对象(一个POCO类).
在我的控制器中,我从对象存储库中获取对象数据.
但在表单中,我还必须显示一些关于该对象的额外数据,例如国家名称而不是countryid,分配的人数(从1:N关系中获取),编辑历史(要获取)从另一个表)和'CanBeCancelled'位.
问题是:我应该把这个逻辑放在哪里?
我提出了这些替代方案:
放置此逻辑的好方法是什么(使用'this logic'我的意思是知道在存储库A中获取人数的逻辑,历史记录由存储库B获取,countryname由CountryRepository和布尔值获取'CanBeCancelled'是由StateEngine服务获取的)?
我正在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相关联
我正在为我的.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登录吗?
我想用它让用户从这个调色板中选择一个调色板作为前 8 种颜色(垂直)。所以我想我可以添加更多,当然不要输入所有的十六进制代码。
有没有办法计算这些值?
因此,例如输入颜色 c6ff89(或任何其他颜色),然后以 498e00(右列)结尾。
所以潜在的问题是:对这些颜色有数学运算吗?
其次,现在我正在查看这些颜色:顶行的项目看起来都是同一种“亮度”(不知道该使用什么术语)。我的意思是左边是相同的蓝色光,右边是绿色光,所以相同的亮度(/暗度)。是否也可以计算,例如为红色或橙色计算相同类型的亮度?
c# ×9
.net ×1
.net-core ×1
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
c#-4.0 ×1
c#-6.0 ×1
color-scheme ×1
colors ×1
enums ×1
linq ×1
msmq ×1
sql ×1
sql-server ×1
wcf ×1