csharp probabilityTest.cs

probabilityTest.cs
 public void FichasRepartidasAJugadoresDebenSerBarajadas()
        {
            var probabilidad = 1m/28m;
            int cantidadCajitas = 0;

            for (int i = 0; i < 100; i++)
            {
                var juego = new JuegoDomino();
                if (juego.Jugadores[0].Fichas[0].Equals(new Ficha(0, 0)))
                {
                    cantidadCajitas++;
                }
            }

            var probabilidadObtenida = cantidadCajitas/100m;

            Assert.IsTrue(probabilidadObtenida <= probabilidad);

        }

csharp モジュラス10 /ウェイト3のチェックデジットを取得する。てきとーにつくったもの。

モジュラス10 /ウェイト3のチェックデジットを取得する。てきとーにつくったもの。

GetChkDigitM10W3.cs
/// <summary>
/// モジュラス10/ウェイト3のチェックデジットを取得します。 
/// </summary>
/// <param name="target">対象の文字列</param>
/// <returns>チェックデジット</returns>
private static string GetChkDigitM10W3(string target)
{
	// 奇数桁は3倍、偶数桁は1倍にしてサマリーをとる。 
	int sum = 0;
	for (int i = 0; i < target.Length; i++) {
		if (i % 2 == 0) {
			// 偶数桁 
			sum = sum + (int.Parse(target[i].ToString()) * 3);
		} else {
			// 奇数桁 
			sum = sum + (int.Parse(target[i].ToString()) * 1);
		}
	}

	// サマリーを10で割った余りを計算。 
	int notMuch = sum % 10;

	if (notMuch == 0) {
		// 余りが0の場合は0を返す。 
		return 0.ToString();
	} else {
		// 0ではない場合は10で引いた値を返す。 
		return (10 - notMuch).ToString();
	}
}

csharp 事件源聚合策略样本

事件源聚合策略样本

gistfile1.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace mergePolicy {
    internal class PropertyValueChangedEvent {
        public string Guid;
        public string EventType= "";
        public string PropertyName="";
        public string PropertyValue="";
    }

    class Program {
        static void Main(string[] args) {
            var events = new List<PropertyValueChangedEvent> {
                new PropertyValueChangedEvent{ Guid = "Guid1", EventType = "PropertyValueChanged", PropertyName = "Title", PropertyValue = "Titile1"},
                new PropertyValueChangedEvent{ Guid = "Guid1", EventType = "PropertyValueChanged", PropertyName = "Text", PropertyValue = "Text1"},
                new PropertyValueChangedEvent{ Guid = "Guid1", EventType = "PropertyValueChanged", PropertyName = "Description", PropertyValue = "Description1"},
                new PropertyValueChangedEvent{ Guid = "Guid1", EventType = "Commit"},
                
                new PropertyValueChangedEvent{ Guid = "Guid2", EventType = "PropertyValueChanged", PropertyName = "Title", PropertyValue = "Title2"},
                new PropertyValueChangedEvent{ Guid = "Guid2", EventType = "PropertyValueChanged", PropertyName = "Text", PropertyValue = "Text2"},
                new PropertyValueChangedEvent{ Guid = "Guid2", EventType = "Commit"},
            };

            Print("LastCommitSampleAggregation result", LastCommitSampleAggregation(events));
            Print("FirstCommitSampleAggregation result", FirstCommitSampleAggregation(events));
            Print("MergeCommitSampleAggregation result", MergeCommitSampleAggregation(events));

            Console.ReadKey();
        }

        private static  Dictionary<string, string> LastCommitSampleAggregation(IEnumerable<PropertyValueChangedEvent> events) {
            var aggregationResults = new Dictionary<string, Dictionary<string, string>>();
            var resultGuid = "";

            foreach (var valueChangedEvent in events) {
                if (!aggregationResults.ContainsKey(valueChangedEvent.Guid))
                    aggregationResults.Add(valueChangedEvent.Guid, new Dictionary<string, string>());

                if (valueChangedEvent.EventType == "PropertyValueChanged") 
                    aggregationResults[valueChangedEvent.Guid][valueChangedEvent.PropertyName] = valueChangedEvent.PropertyValue;

                if (valueChangedEvent.EventType == "Commit") {
                    resultGuid = valueChangedEvent.Guid;
                }
            }

            return aggregationResults[resultGuid];
        }

        private static Dictionary<string, string> FirstCommitSampleAggregation(IEnumerable<PropertyValueChangedEvent> events) {
            var aggregationResults = new Dictionary<string, Dictionary<string, string>>();
            var resultGuid = "";

            foreach (var valueChangedEvent in events) {
                if (!aggregationResults.ContainsKey(valueChangedEvent.Guid))
                    aggregationResults.Add(valueChangedEvent.Guid, new Dictionary<string, string>());

                if (valueChangedEvent.EventType == "PropertyValueChanged")
                    aggregationResults[valueChangedEvent.Guid][valueChangedEvent.PropertyName] = valueChangedEvent.PropertyValue;

                if (valueChangedEvent.EventType == "Commit" && resultGuid == "") {
                    resultGuid = valueChangedEvent.Guid;
                }
            }

            return aggregationResults[resultGuid];
        }

        private static Dictionary<string, string> MergeCommitSampleAggregation(IEnumerable<PropertyValueChangedEvent> events) {
            var aggregationResults = new Dictionary<string, Dictionary<string, string>>();
            var aggregationResult = new Dictionary<string, string>();

            foreach (var valueChangedEvent in events) {
                if (!aggregationResults.ContainsKey(valueChangedEvent.Guid))
                    aggregationResults.Add(valueChangedEvent.Guid, new Dictionary<string, string>());

                if (valueChangedEvent.EventType == "PropertyValueChanged") {
                    aggregationResults[valueChangedEvent.Guid][valueChangedEvent.PropertyName] = valueChangedEvent.PropertyValue;
                    if (aggregationResult.Count > 0) {
                        aggregationResult[valueChangedEvent.PropertyName] = valueChangedEvent.PropertyValue;
                    }
                }
                if (valueChangedEvent.EventType == "Commit" && aggregationResult.Count == 0) {
                    aggregationResult = aggregationResults[valueChangedEvent.Guid];
                }
            }

            return aggregationResult;
        }

        public static void Print(string message, IDictionary<string, string> dict) {
            Console.WriteLine(message);
            foreach (var kv in dict) {
                Console.WriteLine("{0}: {1}", kv.Key, kv.Value);
            }
            Console.WriteLine("=====================\r\n");
        }
    }
}

csharp 标准の数値书式指定文字列とかカスタム书式とか的ToString(字符串)メソッドなどで,数値のフォーマットを指定して文字列で表现することができます。たまにしか使わないから忘れちゃうんですよね。结构色々あっておもしろい.http://msdn.microsoft.com/ja

标准の数値书式指定文字列とかカスタム书式とか的ToString(字符串)メソッドなどで,数値のフォーマットを指定して文字列で表现することができます。たまにしか使わないから忘れちゃうんですよね。结构色々あっておもしろい.http://msdn.microsoft.com/ja-jp/library/dwhawy9k(v = vs.110)的.aspx

StringFormat.cs

var str1 = 1234.ToString("D6"); // 10進数表記 "001234"
var str2 = 255.ToString("X3"); // 16進数表記 "0FF"
DateTiimeString.cs
// http://msdn.microsoft.com/ja-jp/library/8kb3ddd4(v=vs.110).aspx
// 日付型を.ToStringで書式指定できるけど、年の下一桁はシンプルにできない。ので、Substringを組み合わせる。
Console.WriteLine(DateTime.Now.ToString("yy").Substring(1, 1)); // 2013の"3"

csharp 数据集でダミーデータを作ります。<br/>たまにしか书かない分忘れっっいのでメモです..例は,列自体を动的に生成する方法もねています。

数据集でダミーデータを作ります。<br/>たまにしか书かない分忘れっっいのでメモです..例は,列自体を动的に生成する方法もねています。

CreateDummyDataSet.cs
var ds = new DataSet();
var table = new DataTable();

table.Columns.Add("No");
table.Columns.Add("RecpDate");
table.Columns.Add("RecpNo");
string columnName = "Column";
for (int i = 0; i < 100; i++) {
  table.Columns.Add(columnName + i.ToString());
}

for (int i = 0; i < 15; i++) {
  var newRow = table.NewRow();
  newRow["No"] = i.ToString();
  newRow["RecpDate"] = "yyyyMMdd";
  newRow["RecpNo"] = i.ToString("00000");
  for (int j = 0; j < 100; j++) {
    newRow[columnName + j.ToString()] = columnName + j.ToString();
  }

  table.Rows.Add(newRow);
}

ds.Tables.Add(table);

csharp Exemplo de uso do SimpleQuery。

Exemplo de uso do SimpleQuery。

exemplo.cs
// Executa consultas e retorna como  dynamic
// Para criar uma instância do SimpleQuery é necessário informar o nome de uma connectionString que devem conter o provider que é utilizado para gerar a conexão com o banco de dados.

var simpleQuery = SimpleQuery.Create("SQLServerConn");
var result = _simpleQuery.ExecuteQueryAndReturnFirst(@"SELECT u.IdPessoa
                                                             ,u.Nome
                                                             ,u.Login
                                                             ,u.Email
                                                             ,u.Perfil
                                                             ,CASE WHEN e.Id IS NOT NULL THEN e.NomeTema ELSE '' END                                                                          Tema
                                                         FROM Usuario u
                                                         LEFT JOIN Posicao p
                                                           ON u.IdPosicao = p.Id
                                                         LEFT JOIN Empresa e 
                                                           ON p.IdEmpresa = e.Id
                                                        WHERE lower(Login) = lower('{Login}');", new{ Login = login });

csharp xml_rpc_ping.cs

xml_rpc_ping.cs
// I have ping list like Wordpress, and I'm getting it from db.
// string[] listToPing = dtGetPingList.Rows[0]["pinglist"].ToString().Split(',');
private void sendPings(string[] listToPing)
{
    for (int i = 0; i < listToPing.Count; i++)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(listToPing[i].ToString());
        request.Method = "POST";
        request.ContentType = "text/xml";

        Stream stream = (Stream)request.GetRequestStream();

        using (XmlTextWriter xml = new XmlTextWriter(stream, Encoding.UTF8))
        {
            xml.WriteStartDocument();
            xml.WriteStartElement("methodCall");
            xml.WriteElementString("methodName", "weblogUpdates.ping");
            xml.WriteStartElement("params");
            xml.WriteStartElement("param");
            xml.WriteElementString("value", sitename);
            xml.WriteEndElement();
            xml.WriteStartElement("param");
            xml.WriteElementString("value", siteaddress);
            xml.WriteEndElement();
            xml.WriteEndElement();
            xml.WriteEndElement();
            xml.Close();
        }
        
        try
        {
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                {
                    string result = sr.ReadToEnd();
                    sr.Close();
                }
                response.Close();
            }
        }
        catch (Exception ex)
        {
            string error = ex.Message;
        }
    }
}

csharp CodeIQじぇぇじななコードを书いてくん!スパゲティ(spagetti)に纷れているナポリタン(那不勒斯)を取り出して下さい。のコードです.https://codeiq.jp/ace/kansai_takako/q390

CodeIQじぇぇじななコードを书いてくん!スパゲティ(spagetti)に纷れているナポリタン(那不勒斯)を取り出して下さい。のコードです.https://codeiq.jp/ace/kansai_takako/q390

SpagettiNeapolitan.cs
static void Main(string[] args)
{
	var ret = "";
	string spagetti = "gtgtsgipgttptinggipsppaigsesgpetgstpatetisiesagaeaigttetepitiatsegssieeeeatepaaiagtpieataatppiitgiapsteitatiiatpetetetttgpetpaasipttssstpeeeggtiagtttegtiipestsasgpsepaasapttgattgiatppegitiatpasgatgepttggapesaeetaeissttggieietgspagesiipestipggstttpateptitiaetottissgggtttaipappgstsptttgtpispattgegstltiappseisapgistaiagteeiptptpisaieisagstapeteietgteiisgtiptstgtstasspeatspptitttatteastsgtptgtasggpniaaeteaisett";
	string neapolitan = "neapolitan";

	for (int i = 0; i < spagetti.Length; i++) {
		char ch = spagetti[i];
		if (ch == neapolitan.First()) {
			ret += "[" + ch + "]";

			neapolitan = neapolitan.Remove(0, 1);
			if (neapolitan == "") {
				ret += spagetti.Substring(i, spagetti.Length - i);
				break;
			}
		} else {
			ret += ch;
		}
	}

	Console.WriteLine(ret.ToString());
}

csharp 来自ASP.NET WebService的RecycleAppPool <br/>来自http://geekswithblogs.net/svanvliet/archive/2007/01/23/how-to-drop-an-oracle-schema-user-locked-

来自ASP.NET WebService的RecycleAppPool <br/>来自http://geekswithblogs.net/svanvliet/archive/2007/01/23/how-to-drop-an-oracle-schema-user-locked-by-asp.aspx

AppServerService.cs
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.DirectoryServices;
using System.Collections.Generic;
 
[WebService(Namespace = "http://tempuri.org")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class AppServerService : System.Web.Services.WebService
{
    public AppServerService ()
    {
    }
 
    private const string AppPoolDirectoryEntryPath = "IIS://localhost/W3SVC/AppPools";
 
    [WebMethod]
    public List<string> GetAppPoolNames()
    {
        List<string> appPoolList = new List<string>();
 
        using (DirectoryEntry appPoolEntry =
                 new DirectoryEntry(AppPoolDirectoryEntryPath))
        {
            foreach (DirectoryEntry appPool in appPoolEntry.Children)
            {
                appPoolList.Add(appPool.Name);
               
                appPool.Close();
                appPool.Dispose();
            }
        }
 
        return appPoolList;
    }
 
    [WebMethod]
    public AppPoolRestartResponse RecycleAppPool(string appPoolName)
    {
        if (appPoolName == null)
        {
            throw new ArgumentNullException("appPoolName");
        }
 
        AppPoolRestartResponse response = new AppPoolRestartResponse();
        using (DirectoryEntry appPool = new DirectoryEntry(
                 String.Format("{0}/{1}", AppPoolDirectoryEntryPath, appPoolName)))
        {
            try
            {
                appPool.Invoke("Recycle");
 
                response.Successful = true;
                response.Message = String.Format(
                  "Application Pool \"{0}\" was recycled succesfully at {1:HH:mm:ss}.",
                  appPool.Name, DateTime.Now);
            }
            catch (Exception e)
            {
                response.Successful = true;
                response.Message = String.Format(
                  "Application Pool \"{0}\" failed to recycle: \"{1}\".",
                  appPool.Name, e.Message);
            }
        }
 
        return response;
    }
 
    /// <summary>
    ///
    /// </summary>
    public class AppPoolRestartResponse
    {
        private bool _successful;
        private string _message;
 
        public bool Successful
        {
            get { return _successful; }
            set { _successful = value; }
        }
 
        public string Message
        {
            get { return _message; }
            set { _message = value; }
        }    
    }
   
}

csharp IAsyncResult Asynccall异步调用

IAsyncResult Asynccall异步调用

IAsyncResultCall.cs
 public IAsyncResult BeginGetEmailDocuments(AsyncCallback callback, object userState)
{
    var asyncResult = new AsyncResult<IEnumerable<EmailDocument>>(callback, userState);
    ThreadPool.QueueUserWorkItem(
    o =>
    {
      asyncResult.SetComplete(new ReadOnlyCollection<EmailDocument>(this.emailDocuments), false);
    });

    return asyncResult;
}