هل يمكنك اعادة كتابة دالة سي شارب التالية مع شرح وظيفة كل سطر في الكود بالتفصيل    	public static decimal smethod_13(object object_0, int int_0, int int_1, DateTime dateTime_0)
	{
		Class67.<>c__DisplayClass13_0 CS$<>8__locals1 = new Class67.<>c__DisplayClass13_0();
		CS$<>8__locals1.int_0 = int_1;
		CS$<>8__locals1.dateTime_0 = dateTime_0;
		CS$<>8__locals1.nullable_0 = new int?[]
		{
			new int?(MainAccountsIDs.CUSTOMERS),
			new int?(MainAccountsIDs.VENDOR),
			new int?(MainAccountsIDs.MixPeople)
		};
		mrsalesdbEntities mrsalesdbEntities = ConnectionTools.OpenConn();
		ParameterExpression parameterExpression;
		List<Class44> list = (from u in mrsalesdbEntities.view_accounts_allrecords
		where CS$<>8__locals1.nullable_0.Contains(u.accitem_AccID) && u.accitem_PeplID == (int?)CS$<>8__locals1.int_0
		select u).Select(Expression.Lambda<Func<view_accounts_allrecords, Class44>>(Expression.MemberInit(Expression.New(typeof(Class44)), new MemberBinding[]
		{
			Expression.Bind(methodof(Class44.set_accitem_AccID(int?)), Expression.Property(parameterExpression, methodof(view_accounts_allrecords.get_accitem_AccID()))),
			Expression.Bind(methodof(Class44.set_accm_ID(int?)), Expression.Property(parameterExpression, methodof(view_accounts_allrecords.get_accm_ID()))),
			Expression.Bind(methodof(Class44.set_accitem_PeplID(int?)), Expression.Property(parameterExpression, methodof(view_accounts_allrecords.get_accitem_PeplID()))),
			Expression.Bind(methodof(Class44.set_accitem_DealType(string)), Expression.Property(parameterExpression, methodof(view_accounts_allrecords.get_accitem_DealType()))),
			Expression.Bind(methodof(Class44.set_accitem_DealID(int?)), Expression.Property(parameterExpression, methodof(view_accounts_allrecords.get_accitem_DealID()))),
			Expression.Bind(methodof(Class44.set_currID(int?)), Expression.Property(parameterExpression, methodof(view_accounts_allrecords.get_SecCurrency_ID()))),
			Expression.Bind(methodof(Class44.set_accitem_Debit(decimal?)), Expression.Property(parameterExpression, methodof(view_accounts_allrecords.get_accitem_Debit_SecCurrency()))),
			Expression.Bind(methodof(Class44.set_accitem_Credit(decimal?)), Expression.Property(parameterExpression, methodof(view_accounts_allrecords.get_accitem_Credit_SecCurrency()))),
			Expression.Bind(methodof(Class44.set_accitem_Date(DateTime?)), Expression.Property(parameterExpression, methodof(view_accounts_allrecords.get_accitem_Date()))),
			Expression.Bind(methodof(Class44.set_pepole_Name(string)), Expression.Property(parameterExpression, methodof(view_accounts_allrecords.get_pepole_Name())))
		}), new ParameterExpression[]
		{
			parameterExpression
		})).ToList<Class44>();
		using (List<Class44>.Enumerator enumerator = list.GetEnumerator())
		{
			while (enumerator.MoveNext())
			{
				Class67.<>c__DisplayClass13_1 CS$<>8__locals2 = new Class67.<>c__DisplayClass13_1();
				CS$<>8__locals2.class44_0 = enumerator.Current;
				decimal value = AddationalCurrencies.usedCurrencies.Where(new Func<ad_additional_currencies, bool>(CS$<>8__locals2.method_0)).FirstOrDefault<ad_additional_currencies>().value.Value;
				CS$<>8__locals2.class44_0.accitem_Debit = new decimal?((CS$<>8__locals2.class44_0.accitem_Debit * value).Value.GetDecimalParts(false, 0));
				CS$<>8__locals2.class44_0.accitem_Credit = new decimal?((CS$<>8__locals2.class44_0.accitem_Credit * value).Value.GetDecimalParts(false, 0));
			}
		}
		decimal result;
		try
		{
			decimal d = list.Where(new Func<Class44, bool>(CS$<>8__locals1.method_0)).Sum(new Func<Class44, decimal>(Class67.<>c.<>c_0.method_0));
			decimal d2 = list.Where(new Func<Class44, bool>(CS$<>8__locals1.method_1)).Sum(new Func<Class44, decimal>(Class67.<>c.<>c_0.method_1));
			result = (d - d2).GetDecimalParts(false, 0);
		}
		catch (Exception)
		{
			result = 0m;
		}
		return result;
	}