c# - 如果值为字符串类型则按片段搜索,但如果值为 int 则按整个搜索

标签 c# linq mvvm

我决定用 C# 创建一个简单的 MVVM 应用程序。我有一组用户。我可以编辑、添加、删除、更新和搜索它们。对于最后一个选项,我遇到了问题。以下是部分有问题的代码:

var Usersview = new ObservableCollection<User>
                (from item in Users
                 where (
                Convert.ToString(item.UserId) == (Names[0])
                && item.FirstName.Contains(Names[1])
                && item.LastName.Contains(Names[2])
                && item.City.Contains(Names[3])
                && item.State.Contains(Names[4])
                && item.Country.Contains(Names[5]))
                select item);

Names 是我可以搜索的值数组。 名称可以为空。 只有UserID是int,其余都是string。

我想要实现的是通过字符串类型名称的片段进行搜索,但是如果设置了 UserID 值,则程序必须通过整个 int(而不是其片段)进行搜索。如果 Names[0] 是 string.Empty,则程序不会搜索任何内容。你可以帮帮我吗?但要记住。这些是我使用 MVVM 和 Linq 的第一步。所以请原谅。

最佳答案

据推测,您不必为搜索填写所有搜索字段。此外,您不应将 int 转换为 string 来比较相等性。将您的范围变量和搜索条件重命名为更有意义,我得到:

var Usersview = new ObservableCollection<User>
                (from user in Users
                 where
                     (String.IsNullOrEmpty(searchCriteria[0]) || Convert.ToInt32(searchCriteria[0]) == user.UserId) &&
                     (String.IsNullOrEmpty(searchCriteria[1]) || user.FirstName.Contains(searchCriteria[1])) &&
                     (String.IsNullOrEmpty(searchCriteria[2]) || user.LastName.Contains(searchCriteria[2]) &&
                     (String.IsNullOrEmpty(searchCriteria[3]) || user.City.Contains(searchCriteria[3])) &&
                     (String.IsNullOrEmpty(searchCriteria[4]) || user.State.Contains(searchCriteria[4])) &&
                     (String.IsNullOrEmpty(searchCriteria[5]) || user.Country.Contains(searchCriteria[5]))
                select user);

关于c# - 如果值为字符串类型则按片段搜索,但如果值为 int 则按整个搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51676362/

相关文章:

c# - 具有组和项目的 MongoDb C# 驱动程序使用 Aggregate() 查询给出异常

c# - MVVM,我是否必须将每个命令保留在自己的类中?

wpf - Prism 可以与 MVVM Light 一起使用吗?

c# - Windows Phone 8.1 - 在 gridview 上使用图片库图像进行数据虚拟化

javascript - 使用 Javascript 找出 Web 应用程序的主路径

c# - Entity Framework 5复杂类型和字段列表中的未知列错误

c# - .net 4 xslt 扩展对象

c# - 如何分组和计算逗号分隔字符串中项目的出现次数

linq - 在 LINQ 查询中使用组

c# - 奇怪的 WPF 数据绑定(bind)行为