2013-10-25 6 views
0

У меня есть Продукт по базе данных. Название продукта: «WINNER».Linq Совместить одинаковые значения

İ Добавляем новый товар с именем "Победитель", результат - null.

Как я могу совместить ПОБЕДИТЕЛЬ и Победитель как же?

public ActionResult AddProduct(MyModel model) 
{ 

var Result = context.Product.Where(s => s.ProductName == model.NewProductName).FirstOrDefault(); 

return view(); 
} 

Любая помощь будет принята с благодарностью.

+0

Он должен «просто работать», если 'context.Product' является' IQueryable ', управляемым вашим ORM. –

+0

@ ta.speot.is Только в том случае, если сортировка базы данных «ProductName» нечувствительна к регистру. По-видимому, это не так. –

+0

@GertArnold Я считал это, но думал, что это скорее похоже на то, что OP сделал что-то вроде создания своего собственного интерфейса IContext с продуктами IEnumerable . –

ответ

2
public ActionResult AddProduct(MyModel model) 
{ 
var Result = context.Product.Where(s => s.ProductName.ToUpper() == model.NewProductName.ToUpper()).FirstOrDefault(); 
return view(); 
} 
0

насчет

var Result = context.Product.Where(s => s.ProductName.ToUpper() == model.NewProductName.ToUpper()).FirstOrDefault(); 
1

Использование ToLower() на обоих названиях при сравнении:

var Result = context.Product 
        .Where(s => s.ProductName.ToLower() == model.NewProductName.ToLower()).FirstOrDefault(); 
0

К сожалению, нет никакого способа для согласования регистронезависимых строк в Linq к SQL, поэтому вам необходимо преобразовать обе строки в один и тот же корпус:

var Result = context.Product.Where(s => 
    // Make sure both sides are non-null for comparison 
    s.ProductName != null && model.NewProductName != null && 
    // Convert both strings to same case 
    s.ProductName.ToLower() == model.NewProductName.ToLower()).FirstOrDefault(); 
0

Вы можете использовать Equals с StringComparison типа:

var Result = context.Product.FirstOrDefault(s => s.ProductName.Equals(model.NewProductName, StringComparison.InvariantCultureIgnoreCase)); 

Я также объединил Where() с FirstOrDefault().

См. this post для получения дополнительной информации о сравнении строк.

Смежные вопросы