使用AutocompleteStringCollection时C#无法将对象类型数组转换为字符串类型数组

InsParbo

我想使用使用数据库的texbox自动完成功能。数据库查询使用来自三个表的join语句返回名称列表。现在我在使用.ToArray()时遇到了erorr:

错误:“无法将源类型Purchase []转换为目标类型字符串[]”

这是我的代码:

PurchaseManager _aPurchaseManager = new PurchaseManager();

string[] productNameFromJoinedDatabase = _aPurchaseManager.GetProductNameWithCategoryAndBrandName();

productNameTextBox.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
productNameTextBox.AutoCompleteSource = AutoCompleteSource.CustomSource;


var autoComplete = new AutoCompleteStringCollection();
autoComplete.AddRange(productNameFromJoinedDatabase);
productNameTextBox.AutoCompleteCustomSource = autoComplete;

更新:

使用后:

       string[] productNameFromJoinedDatabase = _aPurchaseManager.GetProductNameWithCategoryAndBrandName().Select(x => x.ProductName).ToArray();

先前的错误已消失。但这不适用于自动完成功能!

这是我的购买课程:

class Purchase
{
    public Int64 PurchaseId { get; set; }
    public string ProductName { get; set; }
    public double Price { get; set; }
    public int Quantity { get; set; }
    public double TotalPurchasePrice { get; set; }
    public DateTime DateTime { get; set; }

    public CategoryEntry CategoryEntry { get; set; }
    public BrandEntry BrandEntry { get; set; }
    public Product Product { get; set; }
    public Purchase()
    {
        CategoryEntry = new CategoryEntry();
        BrandEntry = new BrandEntry();
        Product = new Product();
    }
}

这是我的数据库类:

public List<Purchase> GetProductNameWithCategoryAndBrandName()
    {

        List<Purchase> _aPurchaseList = new List<Purchase>();

        _connection.Open();
        string query = string.Format("SELECT CategoryEntryTable.Name, BrandEntryTable.Name, ProductNameExtentionEntryTable.ProductNameExtention " +
                                     "FROM ProductNameExtentionEntryTable " +
                                     "JOIN CategoryEntryTable " +
                                     "ON ProductNameExtentionEntryTable.CategoryId = CategoryEntryTable.CategoryId " +
                                     "JOIN BrandEntryTable " +
                                     "ON ProductNameExtentionEntryTable.BrandId = BrandEntryTable.BrandId");
        _command = new SqlCommand(query, _connection);
        SqlDataReader aReader = _command.ExecuteReader();

        if (aReader.HasRows)
        {
            while (aReader.Read())
            {
                _aPurchase = new Purchase();
                _aPurchase.CategoryEntry.Name = (aReader[0]).ToString();
                _aPurchase.BrandEntry.Name = (string)aReader[1];
                _aPurchase.Product.ProductNameExtention = (string)aReader[2];

                _aPurchaseList.Add(_aPurchase);
            }
        }
        _connection.Close();
        return _aPurchaseList;
    }
恶作剧

尝试_aPurchaseManager.GetProductNameWithCategoryAndBrandName().Select(x => x.ProductName).ToArray();或选择正确的产品名称属性。

这里的问题(我认为)是GetProductNameWithCategoryAndBrandName返回的是一个数组Purchase而不是名称,所以额外的Select就是只获取名称。

如果您认为它应该返回名称,则尝试修复该方法以仅返回名称。

更新:要获得一个组合名称,可以使用如下所示的名称:

_aPurchaseManager.GetProductNameWithCategoryAndBrandName().Select(x => string.Format("{0} {1} {2}", x.CategoryEntry.Name, x.BrandEntry.Name, x.Product.ProductNameExtention)).ToArray();

并不是说string.Format会将它们连接在一起(由空格分隔,但是您可以使用任何字符来分隔)成一个字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将对象数组转换为字符串数组

将对象数组转换为字符串数组

将对象数组转换为字符串数组

C# 无法将类型转换为字符串

Java:将对象转换为数组类型

使JQ将对象数组转换为字符串

将对象数组转换为字符串

将对象(数组?)转换为字符串

jQuery将对象数据转换为字符串数组

将对象转换为字符串数组

无法在C#中的PrivateObject中将类型对象隐式转换为字符串

使用 typescript 或 javascript 将对象数组转换为字符串数组

使用Typescript将对象的JSON数组转换为字符串数组

C#将对象强制转换为存储在字符串变量中的另一种类型

通过char数组C#迭代时无法将字符串转换为char

使用空格分隔符将数组类型变量转换为字符串类型

Swift:将对象数组转换为子类型数组

将对象数组转换为其原始类型的数组

将字符串数组转换为TypeScript类型

将任何类型的任何数组转换为字符串

将对象数组转换为基于字符串属性的嵌套对象数组?

如何使用TypeScript将对象类型数组转换为平面对象类型?

java8流API的投掷不兼容的类型:对象[]不能被转换为整数[]转换字符串数组整数数组时

一维数组类型的值无法转换为字符串视觉

对于字符串数组,无法将类型“int”隐式转换为“string”

将数据框转换为rec数组(并将对象转换为字符串)

将列表转换为字符串数组时类型不兼容

如何在Java中将对象数组转换为字符串数组

在TypeScript中将对象数组转换为字符串数组