我承担了将一个非常古老的经典ASP/VBScript/Access网站转换为"当前"网站的任务.正如您所怀疑的那样,大部分内容都比较简单,但是有一个报告页面依赖于一堆未记录的计算,所以我只需要使用他的代码/公式,但将它们移到C# .
只是为了完全公开,我将Access数据库导入SQL Server没有任何问题.我使用EntityFramewok PowerTools(Code First)对新数据库进行反向工程并创建我的.edmx文件.我注意到当EntityFramework为我创建了.edmx时,它将数据库中浮动的字段定义为C#类中可空的双打(Double?)...是否有任何转置,斩波或更改任何值的风险将float转换为nullable double时的方法?
我认为可疑的另一个方面是四舍五入.显然围绕舍入的数学没有改变,但我想知道VBScript和C#在它们如何回合中有任何已知的差异.
所以这些行在VBScript中
varA1=oDataRs("boundData")
varB1i=varA1*3.0689
varB1=round(varB1i,3)
Run Code Online (Sandbox Code Playgroud)
变成这是C#
var newVal = Math.Round(boundData.Value * 3.0689,3);
Run Code Online (Sandbox Code Playgroud)
我没有将任何东西转换为double或decimal,只是在数据库出来时使用它.我必须使用.Value,因为否则我不能乘以Double?和一个双.
这些值非常接近,但在相当重要的数据上偏差约为0.036,我找不到任何理由.
我正在尝试找到最有效的方法来解析我的System.Web.HTTPRequest.UrlReferrer,以找到用于驱动访问者访问我的网站的搜索词,假设他们通过搜索引擎结果页面到达我的网站.
我在想(希望)我会使用HttpUtility.ParseQueryString方法,但我的问题在于试图弄清楚要解析的变量.我有以下列表,我需要检查.该列表显示了搜索引擎和每个使用的参数.
daum:q,
eniro:search_word,
naver:query,
images.google:q,
google:q,
yahoo:p,
msn:q,
bing:q,
aol:query,
aol:encquery,
lycos:query,
ask:q,
altavista:q,
netscape:query,
cnn:query,
about:terms,
mamma:query,
alltheweb:q,
voila:rdata,
virgilio:qs,
live:q,
baidu:wd,
alice:qs,
yandex:text,
najdi:q,
aol:q,
mama:query,
seznam:q,
search:q,
wp:szukaj,
onet:qt,
szukacz:q,
yam:k,
pchome:q,
kvasir:q,
sesam:q,
ozu:q,
terra:query,
mynet:q,
ekolay:q,
rambler:words
Run Code Online (Sandbox Code Playgroud)
因此,虽然我可以通过每个人说出类似的话
NameValueCollection query = HttpUtility.ParseQueryString(UrlReferrer);
var referrer = Request.UrlReferrer.ToString();
if(referrer.Contains("google.com")
return (query["q"]);
else if(referrer.Contains("yahoo.com")
return (query["p"]);
Run Code Online (Sandbox Code Playgroud)
我认为必须有一个更好的方法,因为我有这个很好的名称/值对,以及ParseQueryString方法的力量,但我画了一个空白.
我需要解析一些类似下面的块的日志文件.
25 Nov 2010 01:11:13 DEBUG [MSMQListenerService]
Processing Recipient with Email : email@internet.com -
<Envelope>
<Body>
<AddRecipient>
<LIST_ID>123456</LIST_ID>
<CREATED_FROM>1</CREATED_FROM>
<UPDATE_IF_FOUND>true</UPDATE_IF_FOUND>
<ALLOW_HTML>true</ALLOW_HTML>
<COLUMN><NAME>EMAIL</NAME><VALUE>email@internet.com</VALUE></COLUMN>
<COLUMN><NAME>AUM</NAME><VALUE>100</VALUE></COLUMN>
<COLUMN><NAME>CITY</NAME><VALUE>New York</VALUE></COLUMN>
<COLUMN><NAME>COMPANY_PROFILE</NAME><VALUE>Building</VALUE></COLUMN>
<COLUMN><NAME>COMPANY_NAME</NAME><VALUE>Company Name</VALUE></COLUMN>
<COLUMN><NAME>COUNTRY_CODE</NAME><VALUE>US</VALUE></COLUMN>
<COLUMN><NAME>FIRST_NAME</NAME><VALUE>My First Name</VALUE></COLUMN>
<COLUMN><NAME>JOB_FUNCTION</NAME><VALUE>My Job</VALUE></COLUMN>
<COLUMN><NAME>LAST_NAME</NAME><VALUE>My Last Name</VALUE></COLUMN>
<COLUMN><NAME>Plan to Buy</NAME><VALUE>Yes</VALUE></COLUMN>
<COLUMN><NAME>STATE</NAME><VALUE></VALUE>NY</COLUMN>
<COLUMN><NAME>Code VALUE</NAME><VALUE>ABCDE_000000_00_00</VALUE></COLUMN>
<COLUMN><NAME>Code Title</NAME><VALUE><![CDATA[Word%3a+Word+Word+to+Word+Words]]></VALUE></COLUMN>
<COLUMN><NAME>ZIP_CODE</NAME><VALUE>11101</VALUE></COLUMN>
<COLUMN><NAME>Form Date</NAME><VALUE>12%2f01%2f2011</VALUE></COLUMN>
</AddRecipient>
</Body>
</Envelope>
Run Code Online (Sandbox Code Playgroud)
但由于misc文本,我不能简单地应用xsl,或将其转换为xml文档.我认为正则表达式将是最好的解决方案,但我对我的正则表达式技巧非常不稳定.基本上我只需要信封中的内容.正则表达式是最好的方法吗?如果框架中的任何内容可以帮助我,我也有.NET.
谢谢!