У меня, когда программа скомпилирована (программа для консоли), выдает в консоли System.Int32[]
. При любом коде выбивает это значение, на других компьютерах программа работает нормально.
В чем проблема?
Программирую на С#.
Обновление
static void Main(string[] args)
{
string s = "Сегодня мы с вами рассмотрели, как работать со строками в Си-шарп. Были описаны основные операторы и методы, которые используются для работы со строками";
string res = s.Substring(s.IndexOf("Были"), Convert.ToInt32( s.IndexOf(", которые") - s.IndexOf("Были")));
Console.WriteLine(res);
Console.ReadKey();
}
LEQADA
5,1753 золотых знака23 серебряных знака48 бронзовых знаков
задан 14 ноя 2014 в 18:25
6
Честно говоря, не вижу проблем в вашем коде — у меня он также работает корректно. Если у вас действительно есть какие-то проблемы с кодом, то могу лишь предположить, что причиной тому могут быть локальные языковые настройки. Попробуйте заменить третью строку вашего кода на следующую:
string res = s.Substring(s.IndexOf("Были", StringComparison.Ordinal), Convert.ToInt32(s.IndexOf(", которые", StringComparison.Ordinal) - s.IndexOf("Были", StringComparison.Ordinal)));
ответ дан 14 ноя 2014 в 18:51
DreamChildDreamChild
36k2 золотых знака44 серебряных знака85 бронзовых знаков
3
Fardar 0 / 0 / 0 Регистрация: 10.01.2019 Сообщений: 28 |
||||
1 |
||||
30.01.2019, 17:47. Показов 30675. Ответов 4 Метки нет (Все метки)
Всем привет.
0 |
Someone007 6315 / 3934 / 1577 Регистрация: 09.05.2015 Сообщений: 9,237 |
||||
30.01.2019, 17:49 |
2 |
|||
РешениеМассив не так выводится. Добавлено через 33 секунды
2 |
0 / 0 / 0 Регистрация: 10.01.2019 Сообщений: 28 |
|
30.01.2019, 18:16 [ТС] |
3 |
Большое спасибо!
0 |
Someone007 6315 / 3934 / 1577 Регистрация: 09.05.2015 Сообщений: 9,237 |
||||
30.01.2019, 18:31 |
4 |
|||
У вас выводится оригинальный массив.
1 |
Fardar 0 / 0 / 0 Регистрация: 10.01.2019 Сообщений: 28 |
||||
30.01.2019, 18:49 [ТС] |
5 |
|||
Да, это я уже заменил. Там все равно неверно получается. Но я уже решил эту проблему. Поменял немного функцию таким образом: перенес j и инкремент в условие цикла
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
30.01.2019, 18:49 |
5 |
Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 R2 как один файл для загрузки. Поскольку исправления являются кумулятивными, каждый новый выпуск содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2.
Проблемы
Рассмотрим следующий сценарий.
-
У вас есть файл языка определения отчетов (RDL), содержащий элемент управления табликса в службах Microsoft SQL Server 2008 R2 Reporting Services.
-
Вы добавляете в элемент управления табликса группу строк или столбцов, а затем устанавливаете выражение группы для данных группы, используя столбец с числовым типом данных.
-
Этот столбец содержит значение, которое не входит в диапазон типа данных Int32 . Например, значение столбца — 9000001777400270.
В этом случае при попытке создать отчет появляется следующее сообщение об ошибке:
При локальной обработке отчета произошла ошибка. Произошла ошибка при обработке отчета. Значение было недопустимо малым или недопустимо большим для Int32.
Решение
Сведения о накопительном пакете обновления
SQL Server 2008 R2
Исправление для этой проблемы впервые выпущено в накопительном обновлении 4. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, щелкните следующий номер статьи базы знаний Майкрософт:
2345451 Накопительный пакет обновления 4 для SQL Server 2008 R2 Примечание. Поскольку сборки являются кумулятивными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2008 R2. Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
981356 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2
Обходное решение
Для решения этой проблемы преобразуйте числовой тип данных в тип данных Double или Int64 . Для этого выполните следующие действия:
-
Дважды щелкните группу в области группы строк или группы столбцов , чтобы открыть свойства группы .
-
На вкладке Общие измените выражение Group на следующее выражение типа данных System. Double :
CDbl (Fields!<имя поля>. ЗначениеВы также можете изменить выражение группы на следующий тип данных System. Int64 :
CLng (Fields!<имя поля>. Значение
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе «Применяется к».
Ссылки
Для получения дополнительных сведений о типах данных посетите следующие веб-сайты:
Общие сведения о структуре «Decimal»
Общие сведения о структуре «Int32»
Общие сведения о структуре «Int64»
Общие сведения о структуре «double»
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.
- Remove From My Forums
-
Question
-
User-1640542475 posted
Hi
I have an error ‘System.Int32’ type to the ‘System.String’ type is not valid in mvc api .
Pls advice me
Thank you
MaideenIt is my code
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace advEditorials.Models { public class MoDetails { public int Id { get; set; } public string DocNo { get; set; } public DateTime PubDate { get; set; } public string MainSection { get; set; } public string SubSection { get; set; } public string Position { get; set; } public string Color { get; set; } public decimal SizeH { get; set; } public decimal SizeW { get; set; } public decimal Volume { get; set; } public decimal PageNumber { get; set; } public string Materials { get; set; } public string Remarks { get; set; } public string Status { get; set; } } }
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Web; namespace advEditorials.Models { public interface IMORepository { Task Add(MoDetails mo); Task Update(MoDetails mo); Task Delete(string id); Task<MoDetails> Getmo(string id); Task<IEnumerable<MoDetails>> GetmoALL(); } }
using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Threading.Tasks; using System.Web; namespace advEditorials.Models { public class MORepository :IMORepository { private readonly SqlDbContext db = new SqlDbContext(); // Retrive All public async Task<IEnumerable<MoDetails>> GetmoALL() { try { var mo = await db.tbl_Editorial.ToListAsync(); return mo.AsQueryable(); } catch { throw; } } // by ID public async Task<MoDetails> Getmo(string id) { try { MoDetails mo = await db.tbl_Editorial.FindAsync(id); if (mo == null) { return null; } return mo; } catch { throw; } } //Add public async Task Add(MoDetails mo) { mo.Id = Guid.NewGuid().ToString(); db.tbl_Editorial.Add(mo); try { await db.SaveChangesAsync(); } catch { throw; } } //Update public async Task Update(MoDetails mo) { try { db.Entry(mo).State = EntityState.Modified; await db.SaveChangesAsync(); } catch { throw; } } //Delete public async Task Delete(string id) { try { MoDetails mo = await db.tbl_Editorial.FindAsync(id); db.tbl_Editorial.Remove(mo); await db.SaveChangesAsync(); } catch { throw; } } private bool MOExists(string id) { return db.tbl_Editorial.Count(e => e.Id == id) > 0; } } }
Controller using advEditorials.Models; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Threading.Tasks; using System.Web.Http; namespace advEditorials.Controllers { public class EditorialController : ApiController { private readonly IMORepository _iMORepository = new MORepository(); [HttpGet] //[Route("api/Editorial/Get")] public async Task<IEnumerable<MoDetails>> Get() { return await _iMORepository.GetmoALL(); } [HttpPost] [Route("api/Editorial/Create")] public async Task CreateAsync([FromBody]MoDetails mo) { if (ModelState.IsValid) { await _iMORepository.Add(mo); } } [HttpGet] [Route("api/Editorial/Details/{id}")] public async Task<MoDetails> Details(string id) { var result = await _iMORepository.Getmo(id); return result; } [HttpPut] [Route("api/Editorial/Edit")] public async Task EditAsync([FromBody]MoDetails mo) { if (ModelState.IsValid) { await _iMORepository.Update(mo); } } [HttpDelete] [Route("api/Editorial/Delete/{id}")] public async Task DeleteConfirmedAsync(string id) { await _iMORepository.Delete(id); } } }
db Table CREATE TABLE [dbo].[tbl_Editorial]( [id] [nvarchar](20) NOT NULL, [DocNo] [varchar](20) NULL, [pubdate] [date] NULL, [MainSection] [varchar](50) NULL, [SubSection] [varchar](50) NULL, [Position] [varchar](50) NULL, [Color] [varchar](20) NULL, [SizeH] [float] NULL, [SizeW] [float] NULL, [Volume] [float] NULL, [PageNumber] [float] NULL, [Materials] [varchar](100) NULL, [Remarks] [varchar](100) NULL, [Status] [varchar](20) NULL, [Category] [varchar](50) NULL ) ON [PRIMARY] GO
Answers
-
User61956409 posted
Hi maideen5,
Operator ‘==’ cannot be applied to operands of type ‘int’ and ‘string’
private bool MOExists(string id)
{
return db.tbl_Editorial.Count(e => e.Id == id) > 0; (this line)}
Please go definition of your tbl_Editorial class and check if the
Id property look like this.[StringLength(20)] public string Id { get; set; }
With Regards,
Fei Han
-
Marked as answer by
Thursday, October 7, 2021 12:00 AM
-
Marked as answer by
- Remove From My Forums
-
Question
-
Hi.
Please someone help with this error:
cannot perform ‘>=’ operation on system.int32 and system.string
This is the error which always give me when executing this one when comparing prices between two values like, i > 5 && i < 10:
dataGrid6.DefaultView.RowFilter = «Price >= » + textBox6.Text + «‘ And Price <= » + textBox7.Text + «‘»;
The interesting thing is when i load excel file in datagridview and try executing this one works, but when i scrape data from website and than executing this one in the other gridview for new scraped data this error shows. please help.
just this query not work i’ve tried to executre other with LIKE works well.
tnx
-
Edited by
Sunday, May 18, 2014 4:12 AM
Found solution for my prev question, but now i have new one
-
Edited by
Answers
-
Unfortunately, that’s not going to work correctly for you in all circumstances. Since you’re now comparing strings instead of actual numeric data, you won’t get valid comparisons (for example, 10 will be less than 2, because as a string, «1» is less than
«2» and «10» will also be less than «2»).You really need to have that DataColumn be a double in your DataTable. You didn’t answer my question as to how you’re getting the data into that DataTable.
~~Bonnie DeWitt [C# MVP]
http://geek-goddess-bonnie.blogspot.com
-
Marked as answer by
Caillen
Sunday, May 25, 2014 12:25 AM
-
Marked as answer by
-
Hello,
There is ‘things’ that happen under the covers when reading sheet data via OleDb that you are by default not in control of but there are literally countless ways to circumvent the default behavior from altering setting in the system registry to how you load
data. No matter which method you use there are good and bad things to contend with.Let’s say a column has integers and doubles, when loading them into a DataTable via OleDb connection and command I would suspect if you interrogate the data type of each column with no formatting these numbers will show as Double. Now let’s say
that if we want integer type and you are confident each value in the cells for that column in the range you are reading from may be represented as an integer and you know the column names we can generate Data Column for each column prior to
reading the data.In the example below the connection string has been setup so that the first row contains data thus each column name is Fx were x is the ordinal index of the column in the range read. Alias column Number3 is a Double but here we setup the DataColumn as integer
(see comments in the example)DataTable dt = new DataTable { TableName = "ExcelData" }; dt.Columns.Add(new DataColumn { ColumnName = "Identifier", DataType = typeof(Int32), AutoIncrement = true, AutoIncrementSeed = 1 }); dt.Columns.Add(new DataColumn { ColumnName = "ServerName", DataType = typeof(string) }); dt.Columns.Add(new DataColumn { ColumnName = "FirstName", DataType = typeof(string) }); dt.Columns.Add(new DataColumn { ColumnName = "Numbers1", DataType = typeof(double) }); dt.Columns.Add(new DataColumn { ColumnName = "Numbers2", DataType = typeof(double) }); /* * For the demo this column is determined to be Double when loading the data if we did * not define the columns above so in this case I know that the two columns above * and the one below are indeed Double I can indicate that Number3 column can be set * to Integer. */ dt.Columns.Add(new DataColumn { ColumnName = "Numbers3", DataType = typeof(int) }); using (System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection()) { cn.ConnectionString = "Your connection string"; using (OleDbCommand cmd = new OleDbCommand { Connection = cn }) { cn.Open(); cmd.CommandText = @" SELECT F1 As ServerName, F2 As FirstName, F3 As Numbers1, F4 As Numbers2, F5 As Numbers3 FROM [Sheet1$] Order By F2"; dt.Load(cmd.ExecuteReader()); } }
Any ways it is important to know (as Bonnie has inquired) how your data was loaded.
Please remember to mark the replies as answers if they help and unmark them if they provide no help, this will help others who are looking for solutions to the same or similar problem.
-
Marked as answer by
Caillen
Sunday, May 25, 2014 12:26 AM
-
Marked as answer by