在LinQ中搜索一个数字

14 浏览
0 Comments

在LinQ中搜索一个数字

有没有办法可以实现这个?

请注意,在VB.NET中使用第一个片段没有问题,它可以正常工作,VB是灵活的,我无法适应C#的严格性!

0
0 Comments

(Search a number in LinQ) 这个问题的出现是因为在查询过程中将整数转换为字符串。解决方法是将查询放入一个对象中,并在查询之外进行整数转换。下面是一种解决方法,需要注意的是,如果对象数量较大,使用foreach循环会增加执行时间。

var items = from c in contacts
            select new 
            {
                Value = c.ContactId,
                Text = c.Name
            };
var itemList = new SelectList();
foreach (var item in items)
{
    itemList.Add(new SelectListItem{ Value = item.ContactId, Text = item.Name });
}

以上是一种解决方法,但需要注意的是,如果对象数量较大,使用foreach循环会增加执行时间。

0
0 Comments

问题:在使用LINQ中搜索一个数值的时候,为什么会出现错误,以及如何解决这个问题?

原因:在EF v4中,使用SqlFunctions.StringConvert方法可以进行数值转换。但是,该方法没有int类型的重载,因此需要将int类型转换为double或decimal类型。

解决方法:将int类型转换为double或decimal类型,并使用SqlFunctions.StringConvert方法进行转换。代码示例:

var items = from c in contacts
            select new ListItem
            {
                Value = SqlFunctions.StringConvert((double)c.ContactId).Trim(),
                Text = c.Name
            };

问题:为什么会出现错误信息"The specified method 'System.String StringConvert(System.Nullable`1[System.Double])' on the type 'System.Data.Objects.SqlClient.SqlFunctions' cannot be translated into a LINQ to Entities store expression."?

解决方法:根据错误信息,推测传递给SqlFunctions.StringConvert方法的参数类型应为double,而不是Nullable。在传递参数之前,先调用GetValueOrDefault()方法。

问题:为什么这种解决方法在SQL Compact中不起作用?

解决方法:在LINQ to Entities查询之后,在LINQ to Objects查询中进行字符串转换,以实现"后处理"数据的效果。这只需要进行一次数据库调用,L2O是在内存中进行的。

问题:为了避免结果之前的空格,应该如何修改代码?

解决方法:在SqlFunctions.StringConvert方法的结果上使用Trim()方法,例如:SqlFunctions.StringConvert((double)c.ContactId).Trim()

问题:为什么在使用SQLite时会出现错误"The Methode 'System.String StringConvert(System.Nullable`1[System.Double])' in Typw 'System.Data.Objects.SqlClient.SqlFunctions' kann nicht in einen Speicherausdruck für 'LINQ to Entities' übersetzt werden. (cannot be translated into "LINQ to Entities")"?

问题:在使用常规SQL时,为什么比较1和"1"的结果为false?

问题:为什么返回的结果是"**********"?

问题:在EF 6及以后的版本中,为什么需要更改命名空间?

解决方法:在EF 6之前,需要包含"System.Data.Objects.SqlClient"命名空间。在EF 6及以后的版本中,需要包含"System.Data.Entity.SqlServer"命名空间。如果在EF6中包含错误的命名空间,代码将可以编译,但会引发运行时错误。

0
0 Comments

搜索一个数字在LinQ中的问题是因为使用了`AsEnumerable()`方法导致的。这个方法会将数据加载到内存中,对于大型数据库来说会导致性能问题。而使用`IQueryable`接口可以在数据库中执行查询,性能更好。

解决方法是不使用`AsEnumerable()`方法,而是使用`IQueryable`接口来执行查询。以下是一个示例代码:

var items = from c in contacts
            where c.ContactId.ToString().Contains(searchitem)
            select new ListItem
            {
                Value = c.ContactId.ToString(),
                Text = c.Name
            };

这样的代码可以在数据库中执行查询,避免了将所有数据加载到内存中的性能问题。

0