Я совсем новичок в Linq,
Я просто пытаюсь выполнить обычный возврат, который обычно выполняется в SQL и, похоже, не может получить прямой ответ от просмотра многих форумов с часами просмотра.
Хорошо, у меня есть таблица Customers с двумя столбцами, CustomerID и CustomerName, которые принадлежат CustomersDataBase
Я успешно смог вернуть одну строку из целочисленного запроса, используя следующий метод (в его основной форме):
public string getCustomerName(int custID)
{
CustomerDataBase cdb = new CustomerDataBase();
string custName = (
from c in cdb.Customers
where c.CustomerID == custID
select c.CustomerName)
.SingleOrDefault();
return custName;
}
Хорошо, это нормально, но когда я пытаюсь изменить ситуацию, пытаясь вернуть CustomerID, возвращается Exception: System.InvalidCastException: указанное приведение недопустимо.
Это мой код:
public int getCustomerID(string custName)
{
CustomerDataBase cdb = new CustomerDataBase();
int custID = (
from c in cdb.Customers
where c.CustomerName == custName
select c.CustomerID)
.SingleOrDefault();
return custID;
}
Я также пытался продумать термины SQL, чтобы сделать строку custName массивом символов:
public int getCustomerID(string custName)
{
CustomerDataBase cdb = new CustomerDataBase();
int custID = (
from c in cdb.Customers
where c.CustomerName == "'"+custName+"'"
select c.CustomerID)
.SingleOrDefault();
return custID;
}
Исключение исчезает, но, похоже, возвращает «0» для CustomerID, хотя у меня есть сотни записей.
Так что в SQL я бы просто использовал следующее:
Select CustomerID
from Customers
where CustomerName="'"+custName+"'"
Любая помощь будет высоко ценится! Спасибо
// Редактирует код, чтобы он работал (следующий ответ от Джона Скита): -
Хорошо. Это работает:
[Table (Name = "TableCustomers")]
Публичный класс
{
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public long CustomerID { get; set; }
[Column]
public string CustomerName { get; set; }
[Column]
}
// для размещения BigInt в базе данных SQL
public long getCustomerID (строка custName)
{
CustomerDatabase cdb = new CustomerDatabase();
long custID = (from c in cdb.Customers
where c.CustomerName == custName
select c.CustomerID).SingleOrDefault();
return custID;
}
}