我正在尝试删除给定字符串末尾的数字.
AB123 -> AB
123ABC79 -> 123ABC
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情;
string input = "123ABC79";
string pattern = @"^\\d+|\\d+$";
string replacement = "";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
Run Code Online (Sandbox Code Playgroud)
然而替换字符串与输入相同.我对正则表达式不太熟悉.我可以简单地将字符串拆分成一个字符数组,并在其上循环以完成它,但它不是一个好的解决方案.删除仅在字符串末尾的数字有什么好的做法?
提前致谢.
在我们的应用程序中,我们创建了几千个电话呼叫记录.每个电话呼叫应具有不同的所有者,由名为GetAnyAppropriateSystemUser()的方法确定,该方法根据某些条件查找一些随机的SystemUser.
在下面的代码示例中,我们创建了一个电话呼叫,稍后在其上使用AssignRequest来指定其所有者.
PhoneCall phoneCall = new PhoneCall();
//
// stuff to set up the new PhoneCall instance here; populate fields, etc...
//
// determine this phonecall's owner through some algorithm
Guid appropriateOwner = GetAnyAppropriateSystemUser();
Guid createdPhoneCallId = _serviceProxy.Create(phoneCall);
if (createdPhoneCallId != Guid.Empty)
{
AssignRequest phoneCallAssign = new AssignRequest();
phoneCallAssign.Assignee = new EntityReference(SystemUser.EntityLogicalName, appropriateOwner);
phoneCallAssign.Target = new EntityReference(PhoneCall.EntityLogicalName, createdPhoneCallId);
_serviceProxy.Execute(phoneCallAssign);
}
Run Code Online (Sandbox Code Playgroud)
这可以正常工作,但有两个调用,一个用于创建,另一个用于分配.在调用Create()方法之前设置PhoneCall记录的"ownerid"是否可以,从而无需在以后调用AssignRequest?它似乎工作,我甚至找到了一个在SDK中做类似事情的例子,如下所示.
SDK示例:针对目标收入汇总自定义期间的目标数据
// Create three goals: one parent goal and two child goals.
Goal parentGoal = new Goal()
{
Title …Run Code Online (Sandbox Code Playgroud) 我正在编写一个单圈计时应用程序,但遇到了 GPS 更新频率问题。在速度超过 75 公里/小时(21 米/秒)时,我的代码停止工作。我的问题是如何以更快的速度请求更新?我需要它以高达 300 公里/小时(83 米/秒)的速度工作,并希望应用程序每行驶几米就获得更新,这意味着它需要每 0.025 秒 @ 300 公里/小时更新一次。下面是我的代码,我尝试了一个替代代码来获取时间戳,但得到了相同的结果,我相信这是 GPS 更新频率问题而不是代码问题。我希望以 300 公里/小时的速度每隔几米更新一次,以防手机在切线上穿过邻近半径。
int prox = 30; // Proximity Switch To Finish Line = 30 meters
int speedGov = 0; // Speed In Kmh
public void OnProviderDisabled(string provider)
{
}
public void OnProviderEnabled(string provider)
{
}
public void OnStatusChanged(string provider, Availability status, Bundle extras)
{
}
protected override void OnResume()
{
this.InitializeLocationManager();
base.OnResume();
_locationManager.RequestLocationUpdates(_locationProvider, 0, 0, this);
}
void InitializeLocationManager()
{
_locationManager = (LocationManager)GetSystemService(LocationService);
Criteria …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取父实体的字段,但我没有获得所有字段,只有其中一些字段.
Entity parentEntity = service.Retrieve("entityname", id, new ColumnSet(true));
Run Code Online (Sandbox Code Playgroud)
在调试时,我看到返回实体中自定义实体的一些自定义属性,但其中一些缺失.例如,我得到选项列表的整数值,但不是值字段的值.检索到的实体中没有这样的属性.
它是一个触发更新后事件的插件.
任何帮助将不胜感激.谢谢.
我一直在尝试使用Dynamics CRM 2011 SDK中的Merge示例. http://msdn.microsoft.com/en-us/library/hh547408.aspx
我修改了一下.我创建了两个Contacts而不是Accounts(尽管代码中的某些变量名称可能会另有说明.例如,_account1Id实际上是contact1的GUID.)
第一个联系人记录包含姓名,姓氏和电话字段.第二个联系人记录填写了姓名,姓氏和电子邮件字段.
合并发生的部分如下.可以从顶部的链接看到原始代码.
当我运行以下修改的示例时,电子邮件地址不会合并到新的联系人记录中.我得到的是一个合并的联系人与其中一个记录的值,添加了地址数据,但没有电子邮件.我认为这应该用第二条记录中的非空字段填充主记录的空字段.
作为Dynamics CRM的新手,我经过大量的谷歌搜索和调试后无法理解原因.如果有人可以就问题可能给我一些反馈,我会很高兴的.
提前致谢.
_serviceProxy.EnableProxyTypes();
CreateRequiredRecords(); // created two contacts with same name, surname. first record has telephone1 filled, second record has emailaddress filled.
EntityReference target = new EntityReference();
target.Id = _account1Id;
target.LogicalName = Contact.EntityLogicalName;
MergeRequest merge = new MergeRequest();
merge.SubordinateId = _account2Id;
merge.Target = target;
merge.PerformParentingChecks = false;
Contact updateContent = new Contact();
updateContent.Address1_Line1 = "test";
merge.UpdateContent = updateContent;
MergeResponse merged = (MergeResponse)_serviceProxy.Execute(merge);
Contact mergeeAccount =
(Contact)_serviceProxy.Retrieve(Contact.EntityLogicalName,
_account2Id, new ColumnSet(allColumns: true)); …Run Code Online (Sandbox Code Playgroud) 我首先使用代码对 Oracle 数据库进行不区分大小写的字符串比较时遇到问题。代码看起来像这样;
String filter = "Ali";
var employee = dbContext.Employees.Where(x => x.Name.Contains(filter)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
上面的代码区分大小写。所以我将 Name 和 filter 都转换为大写;
String filter = "Ali";
filter = filter.ToUpper();
var employee = dbContext.Employees.Where(x => x.Name.ToUpper().Contains(filter)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
一开始似乎一切正常,但后来我意识到当员工姓名或过滤器包含字符“i”时它不起作用。问题是字母 i 在土耳其语中是如何工作的。
在大多数语言中,“i”代表小写字母,“I”代表字符的大写版本。但是在土耳其语中,“i 的大写字母是 '?”,而“I 的小写字母是 '?”。这是一个问题,因为 Oracle 将数据库中的字母“i”大写为“I”。
我们无法访问数据库的字符编码设置,因为它的影响不容易预见。
我想出的是这个,它非常丑陋。
String filterInvariant = filter.ToUpper(CultureInfo.InvariantCulture);
String filterTurkish = filter.ToUpper(CultureInfo.CreateSpecificCulture("tr-TR"));
var employee = dbContext.Employees.Where(x => x.Name.ToUpper().Contains(filterInvariant) || x.Name.ToUpper().Contains(filterTurkish)).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
它似乎解决了一些问题,但感觉像是一种蛮力的解决方法,而不是一个可靠的解决方案。在对 Oracle 数据库使用 Code First C# 时,最佳实践或替代方法是什么?
提前致谢