コード例 #1
0
        public bool CheckPermission(ref string plateNumber, string loosedPlateNumber)
        {
            Vehicle vehicle = null;

            string[] expectedPlateNumber = null;
            if (plateNumber != string.Empty && plateNumber.Count() >= 5)
            {
                string tempPlateNumber = plateNumber;
                vehicle = Vehicles.SingleOrDefault(x => x.NumberPlate == tempPlateNumber);
                if (vehicle == null)
                {
                    expectedPlateNumber = Vehicles.Select(x => x.NumberPlate).ToArray().Where(l => CalculationHelpers.LevenshteinDistance(tempPlateNumber, l) == 1).ToArray();
                    if (expectedPlateNumber.Count() == 1)
                    {
                        if (plateNumber.Count() == expectedPlateNumber[0].Count())
                        {
                            string expectedString = expectedPlateNumber[0];
                            for (int i = 0; i < plateNumber.Count(); i++)
                            {
                                if (expectedString[i] == loosedPlateNumber[i] && expectedString[i] != plateNumber[i])
                                {
                                    vehicle     = Vehicles.SingleOrDefault(x => x.NumberPlate == expectedString);
                                    plateNumber = expectedString;
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                return(false);
            }
            return(true);
        }